Shell Scripting · 7 min read · Nov 14, 2025

Shell Scripting Parte 4: Estruturas de Controle de Repetição

Bem-vindo à parte quatro da série de tutoriais sobre shell scripting da HowtoForge (Clique aqui para ler a parte 1, parte 2 e parte 3 do tutorial). Nesta parte, abordaremos as diferentes estruturas de controle de repetição do shell bash e como usar cada estrutura, fornecendo alguns exemplos. Vamos começar.

Introdução

A estrutura de controle de repetição, também conhecida como estrutura de controle de loop, é um tipo de estrutura de controle em linguagens de programação que é usada para simplificar tarefas repetitivas ou recursivas. As instruções de loop otimizam qualquer código, fornecendo uma maneira de minimizar o código, tornando-o mais fácil de solucionar do que um código não estruturado que fornece a mesma saída. Existem três tipos de instruções de loop que o shell bash suporta - os loops for, while e until.

Loops For

O loop for é uma instrução de loop que usa a palavra-chave for para declarar uma instrução repetitiva. O bash suporta diferentes sintaxes para a instrução de loop for:

Sintaxe 1: Estrutura For-in

for  in   
 do  
     #### sua instrução aqui  
 done

Essa sintaxe começa com a palavra-chave for, seguida por um nome de variável, a palavra-chave in e a lista de valores possíveis para a variável. Cada valor na lista será separado por um espaço e o início das linhas de código que serão repetidas é definido em do e termina com a palavra-chave done.

Vamos criar uma instrução de loop for simples que permitirá ao usuário inserir 5 valores e obter a soma dos números:

#!/bin/bash   
 result=0;   
 input=0;   
 for var in 1 2 3 4 5   
 do   
      printf "Input integer %d : " $var   
      read input   
      result=$((result+input))   
 done   
 echo "o resultado é " $result

Instrução de loop usando for no bash

Neste exemplo, a variável var serve como o contador do nosso loop. Seu valor é definido na lista de números após a palavra-chave in e o shell muda os valores da variável var após cada execução do ciclo na instrução de loop. Como há apenas cinco valores inteiros em nossa lista, o shell executará os códigos dentro da nossa instrução de loop apenas cinco vezes.

Sintaxe 2: Instrução de Loop For com Valores de Lista de Strings

Você também pode declarar uma variável que conterá a lista de itens para seu contador. Por exemplo, considere o seguinte código:

#!/bin/bash  
 list="var1 var2 var3 var4"   
 var=""   
 mkdir sample   
 cd sample   
 echo criando os "diretórios...."  
 for var in $list   
 do   
      mkdir $var   
 done

Lendo valores de strings usando instrução de loop for

A linha list=”var1 var2 var3 var4” define os valores da variável list. Em seguida, foi atribuído a var na linha for var in $list e, finalmente, os diretórios são criados na linha mkdir $var.

Sintaxe 3: Instrução de Loop For com Lista como um Arquivo

Você também pode recuperar uma lista de um arquivo existente para ser usada na instrução de loop for em vez de declará-la dentro do seu código usando o comando cat. Por exemplo, abra seu editor de texto favorito e liste pelo menos cinco nomes de diretórios.

Criando diretórios a partir de um arquivo de texto usando loop for

Em seguida, abra uma nova aba no mesmo editor de texto e crie um novo script. Este script deve ser salvo no mesmo diretório onde a lista de diretórios que você criou anteriormente está salva.

#!/bin/bash   
 dirList=$(cat list)   
 echo "criando diretórios...."  
 for var in $dirList   
 do   
 mkdir $var   
 done

Criando diretórios a partir de um arquivo de texto usando loop for

Este exemplo se torna útil quando você precisa criar centenas de diretórios no seu computador Linux, não acha?

Sintaxe 4: Sintaxe Semelhante ao C

for((initialization; boolean_test; increment/decrement))  
 do   
 #### seu código vai aqui  
 done

Talvez, a estrutura de loop for mais familiar que o shell suporta seja a estrutura semelhante ao C. O loop começa com a inicialização da variável contador e, em seguida, o shell avalia a expressão booleana declarada após a inicialização. Se o resultado da expressão booleana for verdadeiro, o shell executará o conjunto de instruções dentro da cláusula do; caso contrário, ele termina a instrução de loop e prossegue para a linha após a palavra-chave done. O shell prosseguirá para a próxima iteração através da instrução de incremento ou decremento declarada após o teste booleano. Como exemplo, vamos reconstruir nosso primeiro exemplo usando essa estrutura.

#!/bin/bash   
 result=0   
 input=0   
 for((var=1;var<=5;var++))   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 done  
 echo $result

Instruções de loop for no bash

Instrução de Loop While

A instrução while é um tipo de estrutura repetitiva no bash que utiliza a palavra-chave while. Ao contrário da sintaxe do tipo C da estrutura de loop for, a estrutura de controle de repetição while separa a inicialização, o teste booleano e a instrução de incremento/decremento.

Sintaxe 1: Estrutura While com Instruções Condicionais Baseadas em Símbolos Aritméticos

  
 while(condition)  
 do  
     ###seu código vai aqui  
   
 done

Para ser capaz de diferenciar while das outras instruções de loop, vamos construir nosso primeiro exemplo para a instrução while.

#!/bin/bash  
 result=0   
 input=0   
 var=1   
 while((var <= 5))   
 do  
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))  
 done   
 echo "o resultado é " $result

Instrução de loop while na programação shell Bash

Olhando para nosso exemplo, a instrução while começa com a inicialização da nossa variável contador var. Em seguida, o teste booleano é declarado após a palavra-chave while e o conjunto de instruções a serem repetidas será declarado dentro das instruções do e done. Nas instruções while, o interpretador só começará e executará a repetição de códigos se o resultado do teste booleano for verdadeiro. Por outro lado, a instrução de loop só terminará a iteração de códigos quando a expressão booleana resultar em falso.

Sintaxe 2: Instrução de Loop While com Instrução Condicional Baseada em Mnemônicos

  
 while [  ]  
 do  
 ####seu código vai aqui  
   
 done

Você também pode declarar uma instrução condicional baseada em mnemônicos dentro de uma instrução de loop while. Para a declaração, um colchete será usado em vez de parênteses. (Revise as instruções condicionais baseadas em mnemônicos aqui) Por exemplo:

#!/bin/bash   
 var=1;   
 while [ $var -le 5 ]   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "o resultado é " $result

Instrução de loop while na programação shell

Sintaxe 3: Instrução de Loop While com Instrução Condicional Baseada em Arquivo

while read   
 do   
 ####seu código vai aqui   
 done <

Assim como fizemos na instrução de loop for, você também pode abrir um arquivo de texto e associá-lo na instrução de loop while. Por exemplo:

#!/bin/bash   
 mkdir sample2  
cd sample2   
 echo "criando diretórios..."  
 while read var   
 do   
     mkdir $var   
 done

Lendo arquivo usando loop while na programação bash

Neste exemplo, eu reutilizei a lista que criamos há pouco e criei um novo script no mesmo diretório. Observe que, se seu arquivo de texto estiver localizado em um diretório diferente, você deve fornecer o caminho exato do arquivo após o símbolo <.

Instrução de Loop Until

Outro tipo de instrução de loop que o bash suporta é a estrutura until. A instrução until executa cada comando dentro do loop até que a expressão booleana declarada resulte em falso. É o oposto completo da instrução while.

Sintaxe 1: Until Loop com Instrução Condicional Baseada em Símbolos Aritméticos

until (())  
 do  
 ####conjunto de comandos  
 done

Vamos ter um exemplo:

result=0   
 input=0   
 var=1   
 until((var > 5))   
 do   
 printf "Input integer %d : " $var  
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "o resultado é " $result

Instrução de loop until na programação shell

Sintaxe 2: Instrução de Loop Until com Instrução Condicional Baseada em Mnemônicos

  
 until [  ]  
 do  
      ####seu código vai aqui  
   
 done

Como a instrução until é apenas o oposto da instrução de loop while, você também pode declarar uma instrução condicional baseada em mnemônicos na estrutura until. No entanto, para terminar, você deve declarar uma instrução condicional oposta - ou seja, fazer com que a instrução condicional avalie como falsa.

!/bin/bash   
 result=0   
 input=0   
 var=1   
 until [ $var -gt 5 ]   
 do   
 printf "Input integer %d : " $var   
 read input   
 result=$((result+input))   
 var=$((var+1))   
 done   
 echo "o resultado é " $result

instrução de loop until na programação shell

Conclusão

Esta parte do tutorial cobre as três estruturas de loop que o bash suporta - as instruções de loop for, while e until. Cada uma dessas instruções tem diferentes estruturas, usos e vantagens. O bash suporta diferentes estruturas, proporcionando mais opções aos programadores e, assim, tornando o shell scripting fácil de codificar.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.