Estruturas de Controle: Dominando o Fluxo
Condicionais
🔍 If/Else
# Estrutura básica
if [[ condição ]]; then
comando
elif [[ outra_condição ]]; then
outro_comando
else
comando_final
fi
# Exemplo prático
if [[ -f "$arquivo" ]]; then
echo "Arquivo existe"
elif [[ -d "$arquivo" ]]; then
echo "É um diretório"
else
echo "Não encontrado"
fi
🔀 Case
# Estrutura case
case "$variavel" in
padrão1)
comandos
;;
padrão2|padrão3)
outros_comandos
;;
*)
comando_default
;;
esac
# Exemplo prático
case "$opcao" in
start|--start)
iniciar_servico
;;
stop|--stop)
parar_servico
;;
*)
mostrar_ajuda
;;
esac
Loops
🔁 For
# Loop básico
for i in {1..5}; do
echo "$i"
done
# Loop em array
for elemento in "${array[@]}"; do
processar "$elemento"
done
# Loop C-style
for ((i=0; i<10; i++)); do
echo "$i"
done
🔄 While
# Loop while básico
while [[ condição ]]; do
comandos
done
# Exemplo: ler arquivo
while IFS= read -r linha; do
processar "$linha"
done < "arquivo.txt"
# Loop infinito
while true; do
monitorar_sistema
sleep 1
done
🔁 Until
# Loop until
until [[ condição ]]; do
comandos
done
# Exemplo prático
count=0
until [[ $count -ge 5 ]]; do
echo "$count"
((count++))
done
Controle de Fluxo
⏹️ Break e Continue
# Break
for i in {1..10}; do
if [[ $i -eq 5 ]]; then
break
fi
echo "$i"
done
# Continue
for i in {1..5}; do
if [[ $i -eq 3 ]]; then
continue
fi
echo "$i"
done
🚪 Exit
# Saída com status
if [[ erro ]]; then
echo "Erro encontrado" >&2
exit 1
fi
# Saída condicional
[[ $# -eq 0 ]] && { echo "Argumentos necessários"; exit 1; }
Exercícios Práticos
🎯 Missão 1: Controle de Fluxo
#!/bin/bash
# Objetivos:
# 1. Implementar menu interativo
# 2. Processar múltiplos arquivos
# 3. Validar entradas
# 4. Tratar erros
🎯 Missão 2: Automação
#!/bin/bash
# Objetivos:
# 1. Monitorar recursos
# 2. Processar logs
# 3. Backup automático
# 4. Relatórios periódicos
Melhores Práticas
✅ Recomendações
Use condições claras
Evite loops infinitos
Trate casos especiais
Valide entradas
Use exit codes apropriados
⚠️ Armadilhas Comuns
Loops infinitos acidentais
Condições mal formadas
Break/continue mal utilizados
Exit codes incorretos
Falta de tratamento de erro
Próximos Passos
Tratamento de Erros
Otimização
CONTROLE DE FLUXO DOMINADO
[███████████████] 90%
STATUS: FLUINDO
PRÓXIMO: FUNÇÕES
14 abril 2025