10 Exemplos de Bash For Loop com Explicações

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.

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.

  Você realmente precisa de antivírus para sua smart TV?

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.

  Como converter imagens PNG, TIFF e JPEG para um formato diferente no seu Mac

Você pode usar o terminal Linux de maneira semelhante ao CMD.

Em seguida, você pode conferir Como executar scripts bash usando Python?