Em scripts de shell, o uso de estruturas de controle de fluxo é essencial para controlar o fluxo de execução do código e tomar decisões baseadas em condições específicas. Nesta continuação da discussão sobre o uso de estruturas de controle de fluxo em scripts de shell, exploraremos os comandos case, for e while, que são fundamentais para lidar com diferentes cenários de programação.
- Comando
case: O comandocaseé usado para avaliar uma expressão e realizar ações com base nos padrões correspondentes. Ele é semelhante à declaraçãoswitchem outras linguagens de programação. A sintaxe básica é a seguinte:
bashcase expressao in
padrao1)
comando1
;;
padrao2)
comando2
;;
*)
comando_padrao
;;
esac
Neste exemplo, expressao é avaliada e comparada com os padrões definidos (padrao1, padrao2, etc.). Se houver correspondência, os comandos dentro do bloco correspondente são executados. O padrão * é usado como um caso padrão, caso nenhum dos padrões anteriores corresponda à expressão.
- Laço
for: O laçoforé utilizado para percorrer uma lista de itens e executar um conjunto de comandos para cada item da lista. A sintaxe básica é a seguinte:
bashfor variavel in lista
do
comando
done
Aqui, variavel é uma variável que assume cada valor da lista, e os comandos dentro do laço são executados uma vez para cada valor na lista.
- Laço
while: O laçowhileé usado para repetir um conjunto de comandos enquanto uma condição especificada for verdadeira. A sintaxe básica é a seguinte:
bashwhile [ condicao ]
do
comando
done
O bloco de comandos dentro do while é executado repetidamente enquanto a condicao permanecer verdadeira.
Agora, vejamos exemplos práticos de como usar essas estruturas de controle de fluxo em scripts de shell:
- Exemplo de
case: Suponha que você queira escrever um script que imprima uma mensagem dependendo do dia da semana.
bash#!/bin/bash
dia_da_semana=$(date +%u)
case $dia_da_semana in
1)
echo "Hoje é segunda-feira."
;;
2)
echo "Hoje é terça-feira."
;;
3)
echo "Hoje é quarta-feira."
;;
4)
echo "Hoje é quinta-feira."
;;
5)
echo "Hoje é sexta-feira."
;;
6)
echo "Hoje é sábado."
;;
7)
echo "Hoje é domingo."
;;
*)
echo "Erro: Dia inválido."
;;
esac
Este script usa o comando date para obter o dia da semana e, em seguida, usa o case para imprimir a mensagem correspondente.
- Exemplo de
for: Vamos criar um script que liste todos os arquivos em um diretório específico.
bash#!/bin/bash
diretorio="/caminho/do/diretorio"
for arquivo in $diretorio/*
do
echo "Arquivo: $arquivo"
done
Neste exemplo, o laço for percorre todos os arquivos no diretório especificado e imprime o nome de cada arquivo.
- Exemplo de
while: Suponha que você queira contar de 1 a 10 e imprimir cada número.
bash#!/bin/bash
contador=1
while [ $contador -le 10 ]
do
echo "Contagem: $contador"
contador=$((contador + 1))
done
Este script utiliza um laço while para contar de 1 a 10 e imprimir cada número até que o contador atinja 10.
Em resumo, as estruturas de controle de fluxo, como case, for e while, são poderosas ferramentas em scripts de shell que permitem controlar o fluxo de execução do código e realizar tarefas específicas com base em condições ou iterações. Dominar esses conceitos é fundamental para se tornar proficiente na escrita de scripts de shell eficientes e robustos.
“Mais Informações”

Certamente! Vamos aprofundar um pouco mais em cada uma das estruturas de controle de fluxo em scripts de shell e explorar alguns casos de uso adicionais.
Comando case:
O comando case é especialmente útil quando se deseja executar diferentes ações com base em uma única expressão que pode corresponder a vários padrões. Além dos exemplos mencionados anteriormente, aqui estão mais algumas situações em que o case pode ser útil:
- Manipulação de argumentos de linha de comando: Ao desenvolver scripts que aceitam argumentos da linha de comando, o
casepode ser usado para determinar a ação a ser realizada com base nos argumentos fornecidos.
bash#!/bin/bash
case $1 in
start)
iniciar_servico
;;
stop)
parar_servico
;;
restart)
reiniciar_servico
;;
*)
echo "Uso: $0 {start|stop|restart}"
exit 1
;;
esac
Neste exemplo, o script pode ser invocado com argumentos como start, stop ou restart, e o case determina a ação correspondente a ser executada.
- Processamento de entrada do usuário: Se um script precisar interagir com o usuário e executar diferentes ações com base nas respostas fornecidas, o
casepode ser utilizado para isso.
Laço for:
O laço for é uma ferramenta versátil para percorrer listas de itens e realizar operações em cada item. Além de iterar sobre arquivos em um diretório, como mostrado anteriormente, aqui estão mais algumas maneiras de usar o for:
- Iteração sobre uma sequência numérica: O
forpode ser usado para iterar sobre uma sequência numérica e realizar operações com base nos valores.
bash#!/bin/bash
for i in {1..5}
do
echo "Número: $i"
done
Este script imprimirá os números de 1 a 5.
- Processamento de elementos em uma lista: O
fortambém pode ser usado para iterar sobre uma lista de elementos especificada explicitamente.
bash#!/bin/bash
frutas=("maçã" "banana" "laranja" "uva")
for fruta in "${frutas[@]}"
do
echo "Eu gosto de $fruta"
done
Este exemplo itera sobre os elementos da lista frutas e imprime uma frase para cada uma delas.
Laço while:
O laço while é útil quando se deseja repetir um conjunto de comandos enquanto uma condição específica for verdadeira. Aqui estão mais algumas maneiras de usar o while:
- Leitura de um arquivo linha por linha: O
whilepode ser usado para ler um arquivo linha por linha e processar cada linha conforme necessário.
bash#!/bin/bash
arquivo="exemplo.txt"
while IFS= read -r linha
do
echo "Linha lida: $linha"
done < "$arquivo"
Este script lê o arquivo exemplo.txt linha por linha e imprime cada linha lida.
- Espera até que uma condição seja atendida: O
whilepode ser usado para aguardar até que uma condição específica seja atendida antes de continuar com a execução do script.
bash#!/bin/bash
while ! pgrep "processo" > /dev/null
do
echo "Aguardando o processo iniciar..."
sleep 1
done
echo "O processo foi iniciado."
Este exemplo aguarda até que o processo especificado esteja em execução antes de imprimir uma mensagem indicando que o processo foi iniciado.
Esses exemplos demonstram como as estruturas de controle de fluxo em scripts de shell podem ser poderosas e versáteis. Ao combiná-las com outros recursos disponíveis em shell scripting, como substituição de comandos, redirecionamento e expansão de parâmetros, é possível criar scripts complexos e automatizados para uma variedade de tarefas.

