Como usar laços de repetição em Shell Scripting
Laços de repetição em Shell Scripting
Em Shell Scripting, os laços de repetição são estruturas que permitem executar uma série de comandos várias vezes. Os loops ajudam a automatizar tarefas repetitivas, iterando sobre listas, variáveis, comandos e arquivos. O Bash oferece algumas estruturas de repetição essenciais: for, while, e until.
Vamos explorar cada uma, com exemplos práticos e exercícios ao final.
O laço for em shell scripting
O laço for é usado para percorrer uma lista de itens, como um conjunto de números, strings ou até mesmo arquivos. Ele executa o conjunto de comandos uma vez para cada item na lista.
Sintaxe básica do laço for
for item in lista; do Comandos a serem executados done
Exemplo 1: Laço for simples
Esse exemplo exibe uma mensagem para cada nome da lista.
#!/bin/bash for nome in Fábio Marcos Bruno Robson; do echo "Olá, $nome!" done
Saída:
Olá, Fábio! Olá, Marcos! Olá, Bruno! Olá Robson!
Exemplo 2: Laço for com intervalo de números
Podemos definir um intervalo de números e iterar sobre ele:
#!/bin/bash for i in {1..5}; do echo "$i" done
Saída:
1 2 3 4 5
Exemplo 3: Loop for sobre arquivos em um diretório
Este exemplo percorre todos os arquivos .txt em um diretório e exibe o nome de cada arquivo.
#!/bin/bash for arquivo in *.txt; do echo "Encontrado arquivo: $arquivo" done
O laço while em shell scripting
O laço while repete os comandos definidos em seu corpo enquanto uma condição testada for verdadeira. Ele é útil quando a quantidade de iterações não é definida e depende de uma condição.
Sintaxe básica do while
while [ condição ]; do Comandos a serem executados done
Vejamos alguns exemplos do loop while em scripts do shell.
Exemplo 1: Loop while simples
Exibir no terminal a sequência de números de 1 a 5:
#!/bin/bash contador=1 while [ $contador -le 5 ]; do echo "$contador" contador=$((contador + 1)) done
Saída:
1 2 3 4 5
Exemplo 2: Ler valores do terminal de forma sequencial.
O script a seguir solicita que o usuário digite um número no terminal. Ele repete a solicitação até que o usuário entre com o valor 0, momento em que o loop termina.
#!/bin/bash # Inicializar com um valor diferente de 0 para entrar no loop numero=-1 while [ $numero -ne 0 ]; do read -p "Digite um número (0 para sair): " numero echo "Você digitou: $numero" done echo "Fim do laço. Você digitou 0."
O laço until em shell scripting
O laço until é semelhante ao laço while, mas ele repete os comandos enquanto uma condição for falsa, e para a execução quando a condição se torna verdadeira.
Sintaxe básica do until
until [ condição ]; do Comandos a serem executados done
Vejamos alguns exemplos.
Exemplo 1: Loop until simples
Este exemplo incrementa um contador até que ele atinja 5:
#!/bin/bash contador=1 until [ $contador -gt 5 ]; do echo "$contador" contador=$((contador + 1)) done echo "Sequência terminada."
Saída:
1 2 3 4 5 Sequência terminada.
Comandos de controle de loop
Existem comandos de controle que podem ser usados para manipular o comportamento de um loop:
- break: Sai do loop imediatamente.
- continue: Pula a iteração atual e vai para a próxima.
Vejamos como usá-los em scripts.
Exemplo: Uso de break
Este exemplo usa break para sair do loop se o contador atingir 3.
#!/bin/bash for i in {1..5}; do if [ $i -eq 3 ]; then echo "Saindo do loop no número $i" break fi echo "Número: $i" done
Saída:
Número: 1 Número: 2 Saindo do loop no número 3
Exemplo: Uso de continue
Este exemplo usa continue para pular a exibição do número 3.
#!/bin/bash for i in {1..5}; do if [ $i -eq 3 ]; then continue fi echo "Número: $i" done
Saída:
Número: 1 Número: 2 Número: 4 Número: 5
Excelente. Vamos propor agora alguns exercícios para você treinar o uso de laços de repetição em Shell Scripting. Resoluções sugeridas se encontram logo após a lista de exercícios.
Exercícios práticos com laços de repetição
- Crie um script que exiba uma contagem regressiva de 10 a 1 usando um loop for.
- Use um loop while para somar os números de 1 a 100 e exibir o resultado total.
- Escreva um script que use o loop for para percorrer arquivos .txt em um diretório e exiba o nome de cada arquivo encontrado.
- Use um loop until para solicitar uma senha até que o usuário digite a senha correta (“1234”).
- Crie um loop for que percorra os números de 1 a 10, pulando o número 5 e saindo do loop quando chegar ao número 8.
Resolução dos exercícios
Exercício 1
#!/bin/bash for i in {10..1}; do echo "Contagem regressiva: $i" done
Exercício 2
#!/bin/bash soma=0 contador=1 while [ $contador -le 100 ]; do soma=$((soma + contador)) contador=$((contador + 1)) done echo "A soma de 1 a 100 é: $soma"
Exercício 3
#!/bin/bash for arquivo in *.txt; do echo "Arquivo encontrado: $arquivo" done
Exercício 4
#!/bin/bash senha="" until [ "$senha" == "1234" ]; do read -sp "Digite a senha: " senha echo done echo "Senha correta!"
#Exercício 5: Usar break e continue em um loop
#!/bin/bash for i in {1..10}; do if [ $i -eq 5 ]; then continue fi if [ $i -eq 8 ]; then break fi echo "Número: $i" done
Conclusão
Os laços de repetição em Shell Scripting permitem criar fluxos de trabalho eficientes para manipular dados, arquivos e outros elementos de forma automatizada.
Aprender a usar for, while e until com comandos de controle como break e continue aumenta a flexibilidade e o controle que temos sobre o código, permitindo resolver problemas de forma mais simples e eficiente.
Escreva um comentário