Introdução
Neste laboratório, você aprenderá a utilizar loops em scripts Bash. Loops são ferramentas poderosas que permitem repetir um conjunto de instruções várias vezes, tornando seus scripts mais eficientes e flexíveis. Abordaremos três tipos de loops: for, while e until. Além disso, você explorará as instruções break e continue, que oferecem controle sobre a execução do loop. Este laboratório foi projetado para iniciantes e guiará você por cada conceito passo a passo.
Configurando o Ambiente
Vamos começar configurando nosso ambiente de trabalho. Criaremos um novo diretório para armazenar todos os nossos experimentos com loops.
Abra um terminal no WebIDE. Você deve estar no diretório /home/labex/project por padrão. Se não tiver certeza, você pode navegar até lá usando este comando:
cd /home/labex/project
Agora, vamos criar um novo diretório para nossos experimentos de loop:
mkdir bash_loops
cd bash_loops
Isso cria um novo diretório chamado bash_loops e entra nele. Usaremos este diretório para todos os nossos experimentos de loop.
Por que estamos fazendo isso? Organizar seus scripts em diretórios é uma boa prática. Isso mantém seu trabalho arrumado e facilita a localização e o gerenciamento de seus arquivos.
O Loop for
O loop for é usado para iterar sobre uma lista de valores. É como dizer: "Para cada item nesta lista, faça algo". Vamos criar um script que demonstre como usar um loop for.
Crie um novo arquivo chamado for_loop.sh no diretório bash_loops:
touch for_loop.sh
Agora, abra o arquivo for_loop.sh no WebIDE e adicione o seguinte conteúdo:
#!/bin/bash
## Loop through an array of names
echo "Looping through an array:"
NAMES=("Alice" "Bob" "Charlie" "David")
for name in "${NAMES[@]}"; do
echo "Hello, $name!"
done
echo ## Print an empty line for readability
## Loop through a range of numbers
echo "Looping through a range of numbers:"
for i in {1..5}; do
echo "Number: $i"
done
Vamos detalhar o que este script faz:
- O primeiro loop percorre um array de nomes. Para cada nome no array, ele imprime uma saudação.
- O segundo loop usa um intervalo
{1..5}para contar de 1 a 5.
A sintaxe "${NAMES[@]}" pode parecer estranha. O @ significa "todos os elementos do array", e as aspas e chaves garantem que cada elemento seja tratado como um item separado, mesmo que contenha espaços.
Salve o arquivo e torne-o executável com este comando:
chmod +x for_loop.sh
O comando chmod +x torna o arquivo executável, o que significa que você pode executá-lo como um programa.
Agora, execute o script:
./for_loop.sh
Você deverá ver uma saída como esta:
Looping through an array:
Hello, Alice!
Hello, Bob!
Hello, Charlie!
Hello, David!
Looping through a range of numbers:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Isso demonstra como os loops for podem iterar tanto sobre arrays quanto sobre intervalos de números.
O Loop while
O loop while executa um bloco de código enquanto uma condição especificada for verdadeira. É como dizer: "Enquanto esta condição for verdadeira, continue fazendo isso".
Crie um novo arquivo chamado while_loop.sh:
touch while_loop.sh
Abra o arquivo while_loop.sh no WebIDE e adicione o seguinte conteúdo:
#!/bin/bash
## Simple countdown using a while loop
count=5
echo "Countdown:"
while [ $count -gt 0 ]; do
echo $count
count=$((count - 1))
sleep 1 ## Wait for 1 second
done
echo "Blast off!"
Vamos detalhar este script:
- Começamos com
count=5para definir nosso valor inicial de contagem regressiva. - A condição
[ $count -gt 0 ]significa "enquanto a contagem for maior que 0". - Dentro do loop, imprimimos a contagem atual, diminuímos em 1 e aguardamos um segundo.
- Isso continua até que a contagem chegue a 0, momento em que o loop termina.
O comando sleep 1 pausa o script por 1 segundo, criando um efeito de contagem regressiva em tempo real.
Salve o arquivo e torne-o executável:
chmod +x while_loop.sh
Agora, execute o script:
./while_loop.sh
Você verá uma contagem regressiva de 5 a 1, com uma pausa de um segundo entre cada número:
Countdown:
5
4
3
2
1
Blast off!
Isso demonstra como um loop while pode repetir uma ação até que uma condição não seja mais verdadeira.
O Loop until
O loop until é semelhante ao loop while, mas com uma diferença importante: ele continua a execução até que uma condição especificada se torne verdadeira. É como dizer: "Continue fazendo isso até que esta condição seja verdadeira".
Crie um novo arquivo chamado until_loop.sh:
touch until_loop.sh
Abra o arquivo until_loop.sh no WebIDE e adicione o seguinte conteúdo:
#!/bin/bash
## Count up to 5 using an until loop
count=1
echo "Counting up to 5:"
until [ $count -gt 5 ]; do
echo $count
count=$((count + 1))
sleep 1 ## Wait for 1 second
done
Vamos detalhar este script:
- Começamos com
count=1como nosso valor inicial. - A condição
[ $count -gt 5 ]significa "até que a contagem seja maior que 5". - Dentro do loop, imprimimos a contagem atual, aumentamos em 1 e aguardamos um segundo.
- Isso continua até que a contagem se torne maior que 5, momento em que o loop termina.
Salve o arquivo e torne-o executável:
chmod +x until_loop.sh
Agora, execute o script:
./until_loop.sh
Você verá os números de 1 a 5 impressos, com uma pausa de um segundo entre cada um:
Counting up to 5:
1
2
3
4
5
Isso demonstra como um loop until pode repetir uma ação até que uma condição se torne verdadeira.
Usando as Instruções break e continue
As instruções break e continue são usadas para controlar o fluxo dos loops. O break sai de um loop prematuramente, enquanto o continue pula o restante da iteração atual e passa para a próxima.
Crie um novo arquivo chamado break_continue.sh:
touch break_continue.sh
Abra o arquivo break_continue.sh no WebIDE e adicione o seguinte conteúdo:
#!/bin/bash
## Using break to exit a loop early
echo "Demonstration of break:"
for i in {1..10}; do
if [ $i -eq 6 ]; then
echo "Breaking the loop at $i"
break
fi
echo $i
done
echo ## Print an empty line for readability
## Using continue to skip iterations
echo "Demonstration of continue (printing odd numbers):"
for i in {1..10}; do
if [ $((i % 2)) -eq 0 ]; then
continue
fi
echo $i
done
Vamos detalhar este script:
- No primeiro loop, usamos o
breakpara sair do loop quandoifor igual a 6. - No segundo loop, usamos o
continuepara pular os números pares. A condição$((i % 2)) -eq 0verifica se um número é par (divisível por 2 sem resto).
O operador % calcula o resto da divisão. Assim, i % 2 será 0 para números pares e 1 para números ímpares.
Salve o arquivo e torne-o executável:
chmod +x break_continue.sh
Agora, execute o script:
./break_continue.sh
Você deverá ver uma saída como esta:
Demonstration of break:
1
2
3
4
5
Breaking the loop at 6
Demonstration of continue (printing odd numbers):
1
3
5
7
9
Isso demonstra como o break pode encerrar um loop antecipadamente e como o continue pode pular certas iterações com base em uma condição.
Resumo
Neste laboratório, você aprendeu sobre três tipos de loops em scripts Bash:
- Loops
for, que iteram sobre uma lista de itens ou um intervalo de números. - Loops
while, que continuam enquanto uma condição for verdadeira. - Loops
until, que continuam até que uma condição se torne verdadeira.
Você também aprendeu sobre as instruções break e continue, que oferecem mais controle sobre seus loops.
Essas estruturas de repetição são fundamentais para muitos scripts e permitirão que você automatize tarefas repetitivas de forma eficiente. Pratique o uso desses loops em seus próprios scripts para se familiarizar com seu comportamento e casos de uso.



