whileAula 12 — Repita enquanto a condição for verdadeira: contadores, menus interativos e leitura de arquivos linha por linha
while?O while repete um bloco de comandos enquanto uma condição for verdadeira. A cada iteração a condição é testada novamente; quando se torna falsa, o loop encerra.
⚠️ Regra de ouro: sempre modifique a variável de controle dentro do loop. Se a condição nunca mudar, o loop será infinito ∞ e o script trava. Use Ctrl+C para interromper.
CONTADOR=1 — inicializa a variável antes do loop-le 5 — continua enquanto CONTADOR ≤ 5$(($CONTADOR + 1)) — incrementa 1 a cada voltaOs operadores abaixo são usados dentro de [ ] para comparar valores numéricos e definir quando o loop para.
| Operador | Significado | Dica de memória |
|---|---|---|
-lt | Menor que (<) | Less Than |
-le | Menor ou igual (≤) | Less or Equal |
-gt | Maior que (>) | Greater Than |
-ge | Maior ou igual (≥) | Greater or Equal |
-eq | Igual (=) | EQual |
-ne | Diferente (≠) | Not Equal |
$(( ))A construção $(( )) realiza cálculo aritmético no Bash e é fundamental para modificar o contador em loops while.
| Operação | Sintaxe |
|---|---|
| Somar 1 | N=$(($N + 1)) |
| Subtrair 1 | N=$(($N - 1)) |
| Multiplicar | N=$(($N * 2)) |
| Dividir | N=$(($N / 2)) |
| Resto | N=$(($N % 3)) |
while true e breakwhile true cria um loop que nunca termina por si só. O comando break funciona como a saída de emergência: encerra o loop imediatamente quando executado.
💡 while true é ideal para menus que precisam continuar até o usuário escolher sair. Sempre garanta que exista pelo menos um caminho que execute break.
break e continueEsses dois comandos controlam o fluxo dentro de qualquer loop Bash.
break — Sai do loopcontinue — Pula a volta📌 Diferença: break encerra o loop completamente; continue pula apenas a iteração atual e volta ao teste da condição.
O comando read captura a entrada do teclado e armazena em uma variável. Combinado com while true, permite loops que dependem completamente da resposta do usuário.
A combinação while true + case + break é o padrão clássico para menus de sistema que permanecem ativos até o usuário optar por sair.
💡 Padrão profissional: while true + case + break é amplamente usado em scripts de administração de sistemas Linux para menus de configuração e manutenção.
O padrão while read é a forma correta de processar arquivos linha a linha no Bash. Ao contrário do for (que separa por espaços), este padrão preserva a linha inteira.
📌 FOR vs WHILE READ: for NOME in $(cat arq) trata “Ana Silva” como dois itens. while read NOME trata a linha inteira como um só item. Para nomes compostos, sempre use while read.
Exemplo completo que combina while true, validação com -z, break e um for interno para contar palavras digitadas pelo usuário.
-z "$FRASE" — testa se a string está vazia (Enter sem digitar)for P in $FRASE — itera sobre cada palavra da fraseTOTAL_FRASES e TOTAL_PALAVRAS somam a cada iteraçãofor vs whilefor quando…while quando…💡 Regra simples: “Tenho uma lista de itens?” → use for. “Preciso de uma condição para parar?” → use while. Os dois se complementam e podem ser combinados.
Relacione cada elemento do while à sua função.
done
break
continue
-le
-z
while read LINHA
contador.sh que use while para contar de 1 até 10, exibindo cada número. Em seguida, adapte para contar de 10 até 1 (contagem regressiva) usando -gt e decremento.menu.sh com while true + case que ofereça 4 opções: exibir data (date), espaço em disco (df -h), usuário logado (whoami) e sair. O menu deve reaparecer após cada ação.nomes.txt com 5 nomes completos (um por linha). Faça ler-nomes.sh com while read que exiba cada nome numerado e também conte quantas letras tem cada nome com ${#NOME}.adivinha.sh com número secreto fixo. Use while true e dê dicas “Maior!” ou “Menor!”. Ao acertar, exiba o número de tentativas. Bônus: limite em 5 tentativas usando um contador com break ao atingir o limite.while brilha em situações onde o número de repetições depende de uma condição em tempo de execução. Menus, jogos e processamento de arquivos são os casos de uso mais frequentes em scripts de administração Linux.
Qual a diferença entre while e until em Bash?
while [ condição ]: continua enquanto verdadeiro. until [ condição ]: continua enquanto falso (para quando torna-se verdadeiro).Como criar um loop infinito em Bash com while?
while true ou while : criam loops infinitos. Sempre inclua uma condição de saída com break para não travar o sistema.O que faz read -t 5 resposta em um script?
read -t N define um timeout: se o usuário não digitar em N segundos, o comando retorna com código de erro. Útil em scripts de monitoramento.Qual comando Bash monitora continuamente o uso de disco a cada 5 segundos com while?
while true; do comando; sleep N; done. Ctrl+C para interromper. Redirecione para log com >> /var/log/monitor.log.