For Loop é parte integrante de qualquer linguagem de programação. Ele permite que os programas iterem através de um certo número de itens.
Por exemplo, se você quiser percorrer uma lista ou matriz de ‘n’ itens, use um for Loop. Vamos a um exemplo simples:
1Violeta2Índigo3Azul4VerdeMesa Arco-Íris
Para executar qualquer ação ou iterar os itens na tabela acima, exigimos um For Loop.
últimas postagens
Bash para loop
Em um script bash, a sintaxe For Loop é a seguinte:
#!/bin/bash for VAR in 1 2 3 4 5.....N do ACTION 1 ACTION 2 ..... done
Bash For Loop é bastante simples. A primeira linha #!/bin/bash indica que o código é um script bash. VAR significa a variável temporária usada para Looping. N indica o número máximo de iterações. ‘do’ e ‘done’ iniciam e param o Loop, respectivamente. Ações são os comandos executados dentro do Loop.
Podemos executar Bash For Loop com diferentes variáveis, como list, strings, integers e arrays. Este artigo mostrará alguns exemplos comuns do Bash For Loop.
Você pode executar esses programas diretamente na linha de comando bash ou salvá-los em um arquivo e executar o arquivo usando o comando Bash filename.sh.
Lendo a lista estática
Considere a seguinte lista – rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red
Podemos imprimir a lista de strings acima usando o Bash For Loop da seguinte forma:
#! /bin/sh # Define the list rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red # Comma separator pattern using //,/ for colors in ${rainbowColorList//,/ } do echo $colors done
A saída será a lista de itens em uma nova linha.
#Output Violet Indigo Blue Green Yellow Orange Red
Lendo uma matriz
A sintaxe para declarar uma matriz é diferente. Use parênteses para cada elemento (String).
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for colors in "${rainbowArray[@]}"; do echo "I like $colors" done
‘@’ é usado para percorrer cada elemento na matriz.
#Output I like Violet I like Indigo I like Blue I like Green I like Yellow I like Orange I like Red
Também podemos usar o For Loop para imprimir os índices e os elementos do array.
#Printing with index rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red") for i in "${!rainbowArray[@]}"; do echo "Color at index " $i " : " "${rainbowArray[$i]}" i=$((i+1)); done
#Output Color at index 0 : Violet Color at index 1 : Indigo Color at index 2 : Blue Color at index 3 : Green Color at index 4 : Yellow Color at index 5 : Orange Color at index 6 : Red
Observe que usamos ‘!’ no Loop para obter o índice do elemento.
Iterando o intervalo de números
Podemos usar Bash For Loop para iterar em um intervalo de números.
#iterating over range of numbers echo "Countdown begins..." for N in {10..0} do echo "$N" done
O ‘..’ indica um intervalo de números.
#Output 10 9 8 7 6 5 4 3 2 1 0
Também podemos pular números de contagem especificando o intervalo.
No exemplo abaixo, estamos pulando a contagem por 3.
#iterating with skip counting echo "Countdown begins..." for N in {30..0..3} do echo "$N" done
O programa acima começa com 30 como o primeiro número e conta até 0. O último parâmetro no loop for ‘3’ especifica o número da contagem de saltos.
#Output 30 27 24 21 18 15 12 9 6 3 0
Strings e Personagens
Podemos fazer muitas operações de string interessantes com Bash For Loop.
Por exemplo, podemos ler cada caractere de uma string usando o operador ‘seq’ em um For Loop:
#read characters of a string myword="welcome" for i in $(seq 1 ${#myword}) do echo "${myword:i-1:1}" done
Observe que o ‘seq’ deve começar com 1 para obter o primeiro caractere primeiro.
#Output W e l c o m e
Também podemos imprimir as strings separadas por espaço uma a uma:
#read each word from a sentence mysentence="Welcome to etechpt.com. One stop hub for all techies" for word in $mysentence; do echo $word done
#Output Welcome to etechpt.com. One stop hub for all techies
Expressões
Semelhante a qualquer outra linguagem de programação como Java, podemos colocar expressões dentro de um Bash For Loop.
for (( var=10; var>=0; var-- )) do echo "Counting down...$var" done
#Output Counting down...10 Counting down...9 Counting down...8 Counting down...7 Counting down...6 Counting down...5 Counting down...4 Counting down...3 Counting down...2 Counting down...1 Counting down...0
Lendo argumentos de linha de comando
Para ler argumentos de linha de comando, usamos o comando ‘read’. No exemplo abaixo, obteremos alguns números do usuário e imprimiremos a soma usando Bash For Loop. Usamos a variável total para armazenar o total intermediário e final ou a soma dos números.
read -a array -p "Enter the numbers you want to add:" total=0 for i in ${array[@]}; do let total+=$i done echo "Sum of the numbers is: $total"
A saída é:
#Output Enter the numbers you want to add: 3 4 66 Sum of the numbers is: 73
Encontrando números pares e ímpares
Para encontrar números pares e ímpares entre 1 e 10 (ou qualquer número N), devemos usar a condição if junto com Bash for Loop. Para determinar um número par, vamos dividir o número por 2 e, se o resto for 0, categorizá-lo como par ou ímpar.
#declare the list where the even and odd numbers will be sorted and kept evennum="" oddnum="" for (( i=1; i<=10; i++ )) do remainder=$(( $i % 2 )) if [ $remainder -eq 0 ]; then evennum="$evennum $i " else oddnum="$oddnum $i " fi done echo "Even numbers are: "$evennum echo "Odd numbers are: "$oddnum
Observe que estamos dando o intervalo como 10 no exemplo acima. Podemos alterar esse número para obter números pares e ímpares entre qualquer intervalo. Você também pode tentar ler o número do usuário usando o comando ‘ler’ que aprendemos na seção anterior.
#Output Even numbers are: 2 4 6 8 10 Odd numbers are: 1 3 5 7 9
Loop infinito
Infinity ou Loop infinito é um loop que não para de executar, e o programa deve ser forçado a parar usando Ctrl+C. Podemos facilmente criar um loop infinito usando o ‘; ;’ operador dentro do loop for:
for (( ; ; )) do echo "Welcome to etechpt.com" done
#Output Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com Welcome to etechpt.com ^C $
Declaração de quebra
As instruções Break são usadas para interromper o Loop quando uma condição ‘if’ é satisfeita.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then break fi echo "Searching for Green, the color now is $color" done echo "I found my color $color"
Neste exemplo, estamos tentando encontrar a cor verde. O For-Loop percorre cada cor e, uma vez encontrada a cor verde, o programa sai do Loop por causa da instrução break.
#Output Searching for Green, the color now is Violet Searching for Green, the color now is Indigo Searching for Green, the color now is Blue I found my color Green
Continuar Declaração
Continuar é usado para pular o Loop atual e passar para o próximo com base em uma determinada condição. Por exemplo, se você não quiser imprimir a cor ‘Verde’ do nosso programa anterior, podemos colocar continue, e todas as outras cores, exceto Verde, serão exibidas.
for color in Violet Indigo Blue Green Yellow Orange Red do if [[ "$color" == 'Green' ]]; then continue fi echo "$color" done
#Output Violet Indigo Blue Yellow Orange Red
Palavras finais
Cobrimos os usos mais comuns de um Bash For Loop, usando strings, inteiros, arrays e lista. Se você estiver aprendendo Linux, mas tiver uma máquina Windows 10, poderá usar o recurso WSL e instalar o Linux em sua máquina Windows.
Você pode usar o terminal Linux de maneira semelhante ao CMD.
Em seguida, você pode conferir Como executar scripts bash usando Python?