Escrevendo eficiente para loops em dicas e truques
- 768
- 120
- Loren Botsford
Bash é uma linguagem popular de script de shell que é comumente usada em sistemas operacionais baseados em Linux e UNIX. Uma das construções mais usadas no Bash é o loop for, que é usado para iterar em um conjunto de itens e executar uma ação específica em cada item. No entanto, é importante escrever com eficiência para loops para otimizar o desempenho do script.
Também é importante observar que o Bash é apenas um dos muitos idiomas de script disponíveis, e seus recursos podem ser limitados em determinados cenários. Se você achar que seus scripts bash estão se tornando muito complexos ou difíceis de otimizar, considere usar uma linguagem de script mais poderosa, como Python ou Perl.
Neste tutorial, exploraremos algumas dicas e truques para escrever com eficiência para loops em Bash.
Dica #1: use a sintaxe direita
A sintaxe do Basic for Loop em Bash é a seguinte:
Para variável em [lista] do [comando (s)] feito1234 | Para variável em [lista] do [comando (s)] feito |
A [lista] pode ser um conjunto de itens separados por espaços, ou pode ser uma variedade de números especificados usando a sintaxe start… end. É importante usar a sintaxe correta para o seu caso de uso específico.
Por exemplo, se você está iterando em um grande conjunto de itens, é melhor usar a sintaxe do intervalo em vez de listar cada item individualmente. Isso pode ajudar a melhorar o desempenho, reduzindo o número de iterações necessárias para concluir o loop.
Dica #2: minimizar comandos externos
Toda vez que você executa um comando dentro de um loop, ele incorre em uma penalidade de desempenho devido à sobrecarga de lançar um novo processo. Portanto, é importante minimizar o número de comandos externos que você usa no seu loop for.
Por exemplo, em vez de usar um comando externo para contar o número de arquivos em um diretório, você pode usar um comando BASH embutido para realizar a mesma coisa:
file_count = 0 para arquivo em/path/to/diretório/* do ((file_count ++)) feito12345 | file_count = 0 para arquivo em/path/to/diretório/*do ((file_count ++)) feito |
Isso elimina a necessidade de um comando externo, o que pode ajudar a melhorar o desempenho.
Dica #3: Use matrizes
Usar uma matriz para armazenar os itens que você deseja iterar pode ajudar a melhorar a eficiência do seu loop. Isso ocorre porque as matrizes são mais eficientes do que usar uma série de valores separados por espaço.
Por exemplo, em vez de usar uma lista separada por espaço de valores como este:
Para valor no valor1 valor2 valor3 valor4 do [comando (s)] feito1234 | Para valor no valor1 valor2 valor3 valor4do [comando (s)] feito |
Você pode usar uma matriz como esta:
valores = ("value1" "value2" "value3" "value4") para valor em "valores [@]" do [comando (s)] feito12345 | valores = ("value1" "value2" "value3" "value4") para valor em "valores [@]" do [comando (s)] feito |
Isso pode ajudar a melhorar o desempenho, reduzindo a sobrecarga de analisar a string em valores individuais.
Dica #4: Use a expansão dos parâmetros do shell
O uso da expansão dos parâmetros do shell pode ajudar a simplificar o seu loop e melhorar o desempenho, reduzindo o número de comandos que você precisa para executar.
Por exemplo, em vez de usar um comando externo para encontrar o comprimento de uma matriz, você pode usar a expansão dos parâmetros do shell como esta:
valores = ("value1" "value2" "value3" "value4") para ((i = 0; i<$#values[@]; i++)) do [command(s) "values[i]"] done12345 | valores = ("value1" "value2" "value3" "value4") para ((i = 0; i<$#values[@]; i++))do [command(s) "values[i]"]done |
Isso elimina a necessidade de um comando externo, o que pode ajudar a melhorar o desempenho.
Dica #5: Use os comandos embutidos do Bash
Bash possui vários comandos internos que podem ajudar a melhorar a eficiência do seu loops. Por exemplo, você pode usar o comando printf para imprimir a saída formatada dentro do seu loop, que pode ser mais eficiente do que usar um comando externo como o echo.
para i em 1… 10 do printf "número %d \ n" "$ i" feito1234 | para i em 1… 10 do printf "número %d \ n" "$ i" feito |
Isso pode ajudar a melhorar o desempenho, reduzindo a sobrecarga do lançamento de comandos externos.
Conclusão
Em conclusão, a escrita eficiente para loops no Bash pode melhorar significativamente o desempenho de seus scripts e reduzir o tempo de execução. Ao implementar as dicas e truques discutidos neste artigo, como minimizar o uso de comandos externos, reduzir o número de iterações e usar técnicas de paralelização, você pode otimizar seus scripts bash para processar dados com mais rapidez e eficiência.
Independentemente do idioma que você escolher, a chave para escrever scripts eficientes é analisar e otimizar constantemente seu código, testar abordagens diferentes e sempre ter o desempenho em mente. Com esses princípios em mente, você pode criar scripts robustos e eficientes que podem lidar com as tarefas de processamento de dados mais exigentes.