Latest · March 10, 2022 0

Bash ‘For’ Loop: tutorial e exemplos

Bash (Bourne Again Shell) é um prompt de comando shell e linguagem de script em sistemas operacionais GNU/Linux. É o shell padrão para a maioria das distribuições Linux.

Como a maioria das linguagens de script, o Bash fornece sintaxes de loop para repetir tarefas semelhantes várias vezes. Neste artigo, aprenderemos como usar o for loop no Bash.

Um script Bash típico contém uma série de comandos a serem executados um após o outro. As variáveis ​​podem ser usadas para armazenar strings, valores de índice inteiros, resultados de um comando, etc. Os loops são necessários quando o usuário deseja executar um determinado comando várias vezes. É de uso particular quando a saída de um comando está na forma de uma lista e, em cada resultado, na lista, um segundo comando deve ser executado.

A sintaxe geral para for loop no Bash é:

Aqui o <variable> é uma variável Bash, que deve ser um nome de variável shell Linux válido, ou seja, o nome contém uma combinação de letras (az, AZ), números (0-9) e sublinhado ( _ ) e deve começar com uma letra ou um sublinhado.

O <range/list> é um intervalo personalizado de índices inteiros que serão repetidos ou uma lista personalizada de inteiros ou strings. Ele também pode conter outro comando do Linux, no entanto, a saída de tal comando deve ser separada por espaços ou caracteres de nova linha, ou seja, analisável pelo Bash em uma lista (Uma lista no Bash é basicamente uma coleção de valores separados por um espaço ou uma nova linha ).

Qualquer comando a ser executado deve ser colocado dentro do do..done bloquear.

Vejamos alguns exemplos simples.

Fazendo um loop em um intervalo de valores inteiros: O código a seguir cria diretórios denominados dir1, dir2, dir3 até dir10.

Fazendo um loop em uma lista de valores fixos: O código a seguir imprime cada string ou inteiro na lista fixa fornecida.

Fazendo um loop na saída de um comando: O código a seguir faz um loop sobre a saída de ls e imprime o nome de cada arquivo no formato fornecido.

Uma sintaxe baseada em expressão semelhante à linguagem de programação C também é possível no Bash:

Aqui, Expression 1 é a inicialização da(s) variável(is) de índice. Expression 2 é a condição em que o loop deve ser encerrado; esta condição é verificada em cada iteração. Expression 3 especifica o incremento/decremento/modificação no valor da(s) variável(is) de índice

O exemplo a seguir simplesmente imprime valores de 0 a 4:

O exemplo a seguir cria um loop infinito, pois nenhuma expressão está sendo especificada:

Também podemos usar a instrução condicional if dentro do laço. O if declaração pode ser usada com break instrução, para uma saída condicional do loop.

O loop acima imprimirá números de 0 a 4. Então, quando o valor de i for 5, ele sairá do loop. Isso é de uso particular quando um loop deve ser encerrado quando um comando fornece uma saída específica. Por exemplo, o loop a seguir é interrompido se e quando encontrar um arquivo vazio.

O comando wc -c <filename> imprime o número de linhas do arquivo <filename>. Ele imprime no formato <no_of_lines> <filename>por exemplo, 10 test.txt. Estamos saindo do loop quando o número de linhas é 0, ou seja, um arquivo vazio.

Semelhante ao C e muitas outras linguagens de programação, o bash também possui um continue instrução, para pular a parte restante de uma iteração em um loop se uma condição específica for satisfeita.

O loop acima imprimirá números de 0 a 10, exceto 5, porque durante a iteração de i=5 há uma instrução continue, que pulará o resto do código no loop no início com a iteração de i=6.

No exemplo a seguir, imprimimos o número de linhas em um arquivo e uma iteração específica continue se for um diretório e não um arquivo.

[[ -d $file ]] verifica se o arquivo é um diretório. Se for, então pulamos para o próximo arquivo, ou seja, próxima iteração. Se não for um diretório, imprimimos o número de linhas do arquivo usando wc comando, como mostrado anteriormente também.

A sintaxe de loop pode ser usada diretamente no shell Bash ou em um arquivo de script de shell. Uma vez por for Se a sintaxe de loop for inserida no shell, o shell continuará o prompt para permitir que o usuário continue os comandos a serem repetidos.

Ou então o usuário pode salvar isso em um arquivo de script e executar o arquivo de script.

O #!/bin/bash no início especifica o interpretador a ser usado quando o arquivo é executado. Embora o Bash seja o shell mais usado atualmente, alguns usuários preferem shells como zshque deve ser especificado no lugar do bash no início deste arquivo.

Para dar permissões de execução para este arquivo, execute:

Finalmente, para executar o arquivocorre:

O for loop no Bash é um recurso bastante simples, mas tem seu uso em quase todo tipo de cenário de script complexo. Aprendê-lo ajuda muito, seja você um usuário Linux regular ou avançado, ou começando a aprender automação para tarefas de administração de sistemas e DevOps.