CodeGym /Cursos /Docker SELF /Condições (`if`, `else`) e loops (`for`, `while`) no bash...

Condições (`if`, `else`) e loops (`for`, `while`) no bash

Docker SELF
Nível 3 , Lição 4
Disponível

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, e fi (fechando o bloco if) — 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 bloco else 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 inserido GUESS não for igual ao número secreto SECRET.

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 usando ping.

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!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION