Bash Script – Funcionamento dos Ciclos
Os ciclos são uma parte fundamental da programação em Bash. Permitem executar um bloco de código várias vezes com base numa condição ou conjunto de valores. Vamos explorar os três tipos principais de ciclos em Bash e como utilizá-los com exemplos práticos.
Ciclo for
O ciclo for
é útil quando se deseja iterar sobre um conjunto conhecido de valores, como uma lista de números, palavras ou ficheiros. Eis exemplos de um ciclo for
com números, palavras e a leitura de linhas de ficheiros.
Exemplo com Números
# Exemplo de ciclo for com números
for num in {1..5}
do
echo "Número: $num"
done
Neste exemplo, o ciclo for
itera sobre os números de 1 a 5 e imprime cada número.
Exemplo com Palavras
# Exemplo de ciclo for com palavras
frutas=("maçã" "banana" "laranja" "uva")
for fruta in "${frutas[@]}"
do
echo "Fruta: $fruta"
done
Neste exemplo, o ciclo for
itera sobre uma matriz de frutas e imprime cada uma delas.
Exemplo de Leitura de Ficheiro
# Exemplo de ciclo for a ler linhas de um ficheiro
ficheiro="exemplo.txt"
for linha in $(cat "$ficheiro")
do
echo "Linha do ficheiro: $linha"
done
Neste exemplo, o ciclo for
lê e imprime cada linha do ficheiro exemplo.txt
.
Ciclo while
O ciclo while
é usado quando se deseja executar um bloco de código enquanto uma condição específica for verdadeira. Eis exemplos de um ciclo while
com números, palavras e a leitura de linhas de ficheiros.
Exemplo com Números
# Exemplo de ciclo while com contagem
contador=1
while [ $contador -le 3 ]
do
echo "Contador: $contador"
contador=$((contador + 1))
done
Neste exemplo, o ciclo while
continua a executar enquanto o valor do contador for menor ou igual a 3.
Exemplo com Palavras
# Exemplo de ciclo while com palavras
mensagem="Olá, Mundo!"
while [ ${#mensagem} -gt 0 ]
do
echo "Carácter: ${mensagem:0:1}"
mensagem="${mensagem:1}"
done
Neste exemplo, o ciclo while
continua a executar enquanto a variável mensagem
tiver caracteres restantes.
Exemplo de Leitura de Ficheiro
# Exemplo de ciclo while a ler linhas de um ficheiro
ficheiro="exemplo.txt"
while IFS= read -r linha
do
echo "Linha do ficheiro: $linha"
done < "$ficheiro"
Neste exemplo, o ciclo while
lê e imprime cada linha do ficheiro exemplo.txt
.
Ciclo until
O ciclo until
é semelhante ao while
, mas executa um bloco de código enquanto uma condição específica for falsa. Eis exemplos de um ciclo until
com números, palavras e a leitura de linhas de ficheiros.
Exemplo com Números
# Exemplo de ciclo until com contagem regressiva
contador=5
until [ $contador -eq 0 ]
do
echo "Contador: $contador"
contador=$((contador - 1))
done
Neste exemplo, o ciclo until
continua a executar até que o contador seja igual a 0.
Exemplo com Palavras
# Exemplo de ciclo until com inversão de palavra
palavra="Bash"
until [ ${#palavra} -eq 0 ]
do
echo "Carácter: ${palavra: -1}"
palavra="${palavra%?}"
done
Neste exemplo, o ciclo until
continua a executar até que a variável palavra
esteja vazia.
Exemplo de Leitura de Ficheiro
# Exemplo de ciclo until a ler linhas de um ficheiro inversamente
ficheiro="exemplo.txt"
linhas=()
while IFS= read -r linha
do
linhas=("$linha" "${linhas[@]}")
done < "$ficheiro"
until [ ${#linhas[@]} -eq 0 ]
do
linha="${linhas[-1]}"
unset 'linhas[${#linhas[@]}-1]'
echo "Linha do ficheiro: $linha"
done
Neste exemplo, o ciclo until
lê e imprime cada linha do ficheiro exemplo.txt
em ordem inversa.
Conclusão
Agora tem uma compreensão sólida dos ciclos em Bash e de como utilizá-los com números, palavras e a leitura de ficheiros. Lembre-se de que estes são apenas exemplos simples, e pode criar ciclos mais complexos para satisfazer as suas necessidades específicas. Experimente estes ciclos no seu ambiente Bash e comece a automatizar tarefas de forma eficiente.