Condições if
, else
e loops for
, while
no bash
1. Condições no bash: if
, else
, e um pouco de mágica
Pra que servem as condições?
As condições permitem que seu script tome decisões com base nos dados de entrada, variáveis ou até mesmo nos resultados de execução de comandos. Por exemplo, você quer verificar se um arquivo existe ou garantir que um servidor esteja acessível antes de executar a próxima ação. É aí que entra a construção if
.
Sintaxe básica
Veja como é uma condição clássica if
no bash:
if [ condição ]; then
# Aqui o código é executado se a condição for verdadeira
echo "Condição satisfeita!"
else
# Aqui o código é executado se a condição for falsa
echo "Condição não satisfeita!"
fi
Palavras-chave:
if
,then
,else
, efi
(fechando o blocoif
) — são palavras mágicas. Sem elas, o script não funciona.- Colchetes
[ ... ]
são usados para checar condições.
Exemplo 1: Verificando a existência de um arquivo
#!/bin/bash
FILE="/etc/passwd"
if [ -f $FILE ]; then
echo "Arquivo $FILE existe."
else
echo "Arquivo $FILE não encontrado."
fi
Explicação:
-f
verifica se o arquivo existe.- Se o arquivo existir, o comando
echo
exibe uma mensagem informando isso. Caso contrário, o blocoelse
será executado.
Condições com comandos
Você pode usar o resultado da execução de um comando como condição, afinal, no Linux tudo é um comando.
Exemplo 2: Verificando a acessibilidade de um site
#!/bin/bash
if ping -c 1 example.com &> /dev/null; then
echo "Site acessível."
else
echo "Site inacessível."
fi
Explicação:
ping -c 1
envia um único pacote para o servidor. Se ele responder, a condição torna-se verdadeira.&> /dev/null
esconde a saída do comando pra evitar poluir o terminal.
Usando o operador elif
Às vezes, não basta usar apenas if
e else
. Precisa-se levar em conta várias condições. É aí que entra o elif
.
Exemplo 3: Determinando o período do dia
#!/bin/bash
HOUR=$(date +%H)
if [ $HOUR -lt 12 ]; then
echo "Bom dia!"
elif [ $HOUR -lt 18 ]; then
echo "Boa tarde!"
else
echo "Boa noite!"
fi
Explicação:
date +%H
retorna a hora atual no formato de 24 horas.- Comparamos o horário atual com valores fixos: se for menor que 12 — manhã, menor que 18 — tarde, caso contrário — noite.
2. Loops no bash: repetir é a mãe do aprendizado
Loops são uma maneira de fazer seu script repetir ações enquanto uma certa condição for satisfeita. Isso é especialmente útil se você precisar processar vários arquivos, repetir uma tarefa várias vezes ou esperar por um certo evento.
Loop for
for
percorre uma lista de valores (por exemplo, arquivos ou números) e executa uma ação específica para cada um deles.
Exemplo 4: Loop for
simples
#!/bin/bash
for i in {1..5}; do
echo "Essa é a iteração número $i"
done
Explicação:
{1..5}
— lista de números de 1 a 5.- Em cada iteração, a variável
i
recebe um valor da lista.
Exemplo 5: Iterar sobre arquivos em um diretório
#!/bin/bash
for FILE in /etc/*; do
echo "Processando o arquivo: $FILE"
done
Explicação:
/etc/*
— é a lista de todos os arquivos na pasta/etc
.- Em cada iteração, a variável
FILE
contém o nome de um arquivo.
Loop while
while
executa ações enquanto uma condição for satisfeita.
Exemplo 6: Adivinhe o número
#!/bin/bash
SECRET=5
GUESS=0
while [ $GUESS -ne $SECRET ]; do
echo "Insira seu palpite (um número de 1 a 10):"
read GUESS
done
echo "Você acertou!"
Explicação:
[ $GUESS -ne $SECRET ]
— a condição continua enquanto o número inseridoGUESS
não for igual ao número secretoSECRET
.
Combinando loops e condições
Às vezes, condições e loops trabalham juntos.
Exemplo 7: Verificar vários sites
#!/bin/bash
SITES=("example.com" "google.com" "nonexistent.website")
for SITE in ${SITES[@]}; do
if ping -c 1 $SITE &> /dev/null; then
echo "$SITE está acessível."
else
echo "$SITE não está acessível."
fi
done
Explicação:
- O array
SITES
contém uma lista de sites. for
percorre cada site do array.if
verifica a acessibilidade do site usandoping
.
3. Exercícios práticos
Verificação de domínio
Escreva um script que receba um nome de domínio como argumento e verifique sua disponibilidade.
Dica:
if ping -c 1 $1 &> /dev/null; then
echo "Domínio disponível."
else
echo "Domínio indisponível."
fi
Trabalhando com arquivos
Escreva um script que verifica a existência de vários arquivos e exibe o resultado pra cada um deles.
Dica:
FILES=("file1.txt" "file2.txt" "/etc/passwd")
for FILE in ${FILES[@]}; do
if [ -f $FILE ]; then
echo "$FILE existe."
else
echo "$FILE não encontrado."
fi
done
Tabela de multiplicação
Escreva um script com loops aninhados que exiba a tabela de multiplicação para números de 1 a 10.
Dica:
for i in {1..10}; do
for j in {1..10}; do
echo -n "$((i * j)) "
done
echo ""
done
Agora você pode adicionar inteligência e lógica nos seus scripts bash. As condições permitem verificar estados e tomar decisões, enquanto os loops ajudam a automatizar tarefas repetitivas. Ainda tem muita coisa incrível pra você explorar e aprender sobre automação de tarefas!
GO TO FULL VERSION