Comando Bash For Loop – Guia e Exemplos

O for loop é uma das instruções mais básicas em diversas linguagens de programação. Neste tutorial, vamos explicar como é utilizado na linguagem de programação Bash  – justificando o nome, “bash for loop”.

Um for loop é uma instrução de iteração, significando que pode ser executada repetidamente. Digamos que você quer executar uma instrução 5 vezes. Ao invés de escrever 5 pedaços de códigos distintos, você pode escrever uma única sintaxe de um for loop. Mas este é só um exemplo, vamos explorar ainda mais o potencial do for loop nos parágrafos abaixo. Vamos lá!

Sintaxe Bash For Loop

Basicamente, a sintaxe mais simples do for loop repete a ocorrência de uma série de variáveis. Tipicamente, ela fica assim:

for VARIABLE in 1 2 3 4 5 .. N
Perform the below command:
    command1
    command2
    commandN
done

No mundo real, esta sintaxe ficaria parecida com o exemplo abaixo:

#!/bin/bash
for i in 1 2 3 4 5
do
echo "Hello $i"
done

Executar o arquivo bash irá gerar o seguinte texto:

Hello 1
Hello 2
Hello 3
Hello 4 
Hello 5

Vamos inspecionar cada elemento:

  • #!/bin/bash – mostra que é código é um script bash.
  • i – é uma marcação para uma variável. Enquanto que $i é o valor individual da variável. Você também pode escrevê-lo como c/$c ou outro nome.
  • in – separa a variável e os itens que seguem.
  • 1 2 3 4 5 –  é um exemplo de itens que você quer basear a instrução.
  • do – é a palavra chave que inicia os loops. Ele, então, irá executar a instrução n vezes, sendo n o número total de itens. Aqui, o valor de n é 5.
  • echo “Hello: $i” – é o código que será repetido n vezes. Lembre-se que aspas transformam qualquer coisa em uma variável.
  • done – encerra o loop.

Você pode escrever o código de maneiras diferentes dependendo da versão do bash sendo utilizada:

Versões 3.0+ do bash permitem encurtar o intervalo (range) com “. .”.

#!/bin/bash
for i in {1. .5}
do
 echo "Hai $i"
done

Versões 4.0+ do bash permitem que você use a sintaxe {INÍCIO. .FIM. .INCREMENTO}.

#!/bin/bash
for i in {0. .8. .2}
do
 echo "Hai $i"
done

O resultado vai ser este:

Hai 0
Hai 2
Hai 4
Hai 6 
Hai 8

Outras sintaxes comuns são:

for VARIABLE in file1 file2 file3
do
    command1 on $VARIABLE
    command2
    commandN
done

Ou assim:

for OUTPUT in $(Linux-Or-Unix-Command-Here)
do
    command1 on $OUTPUT
    command2 on $OUTPUT
    commandN
done

Exemplos de Bash For Loop

Você pode atualizar a sintaxe para fazer múltiplas operações. Lembre-se, antes de fazer qualquer coisa é preciso acessar sua hospedagem de VPS.

Confira este tutorial caso você esteja tendo problemas com isso. Ou, caso você esteja com dificuldades quanto ao bash, confira nosso guia básico de comandos Bash. Não se esqueça que funções bash precisam estar em um arquivo .sh. Para criar um, execute o comando:

vim NomeArquivo.sh

Isto irá criar um arquivo .sh, e irá abri-lo com o editor VIM. Para aprender mais sobre isso, não deixe de conferir o guia básico mencionado acima.

Utilizar Bash For Loop para Criar Loops Infinitos

Uma vez ativado, este loop continuará sendo executado até que você o interrompa pressionando Control + C. Neste caso, o termo “Hello World” continuará reaparecendo sozinho.

#!/bin/bash
for (( ; ; ))
do
 echo "Hello World!"
done

Utilizar Bash For Loop para Criar um Loop de Três Expressões

O loop é composto de três expressões escritas – um iniciador (EXP1), uma condição (EXP2) e uma expressão de contagem (EXP3). Algumas pessoas chamam de loop estilo C devido a semelhança de estruturação de código. A sintaxe deste loop é:

for (( EXP1; EXP2; EXP3 ))
do
    command1
    command2
    command3
done

Exemplo:

#!/bin/bash
for (( c=1; c<=5; c++ ))
do  
 echo "Hai $c"
done

O código diz que o valor inicial é 1. O loop será executado desde que a condição EXP2 seja verdadeira, o que significa que não deve ser maior do que 5. Além disso, o sinal ++ indica que o incremento é 1. Então, ele repetirá o loop um por um, começando do valor inicial. Resultado:

Hai 1
Hai 2
Hai 3
Hai 4 
Hai 5

Utilizar Bash For Loop para Criar um Loop Pule e Continue

A instrução continue pula o loop para o valor inicial e continua o loop em seguida. É assim que a sintaxe fica:

for I in 1 2 3 4 5
do
if [condition]
then
    continue   #Go to next iteration of I in the loop and skip statements3
fi
statement
done

Seguindo esta sintaxe podemos criar um bash loop pule e continue assim:

for i in {1..5}
do
 if [[ "$i" == '4' ]]
 then
   continue
 fi
 echo "Hai $i4"
done

O resultado vai ser:

Hai 1
Hai 2
Hai 3
Hai 5

Já que o valor 4 fecha com a instrução continue, o loop não executou o código e continuou com o próximo valor, que é o 5.

Utilizar Bash for Loop para Criar um Loop de Saída Condicional com Pausa

O loop permite que você pare a operação se qualificar a condição estabelecida. Isso pode ser seguido por outra instrução. Esta é a sintaxe:

for I in 1 2 3 4 5
 do
 if [condition]
 then
   break
 fi
 statement
done

Ao usar esta função, nosso código vai ficar assim:

for city in Manila Bangkok Jakarta Kuala Lumpur
do
 if [[ "$city" == 'Jakarta' ]]; then
   break
 fi
 echo "city: $city"
done

echo 'Yes, that’s all!'

Finalmente, o resultado:

city: Manila
city: Bangkok
Yes, that’s all!

A instrução diz ao loop para para a operação uma vez que a condição for verdadeira (encontrar o termo Jakarta). Ele então irá executar o segundo código, que é exibir o texto Yes, that’s all.

Resumo

O Bash for loop é ótimo para automatizar tarefas repetitivas. Você pode fazer muito mais além dos exemplos básicos mostrados acima. Por exemplo, você pode acompanhar arquivos e realizar muitas outras tarefas.

Tudo que você precisa é escrever a sintaxe. Pode ser uma grande linha de aprendizado, mas este tutorial vai dar uma boa base para quem está começando. Lembre-se que a prática leva a perfeição, então continue praticando!

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.