Shell Scripting – Estrutura de decisão condicional if then else – 13
Condicional if then else em Shell Scripting
Estruturas de Decisão Condicional, ou simplesmente Condicionais são uma parte muito importante de qualquer linguagem de programação, permitindo que o programa tome decisões com base em condições.
Em Shell Scripting, usamos o comando if-then-else para realizar essas verificações, permitindo controlar o fluxo de execução dos scripts com base em determinadas condições.
Estrutura básica de um condicional if-then-else
A estrutura básica de um if-then-else ou condicional composto no shell é a seguinte:
if [ condição ]; then # Comandos se a condição for verdadeira else # Comandos se a condição for falsa fi
Os comandos dentro do then serão executados se a condição for verdadeira. Se for falsa, o código dentro do else será executado. O else é opcional, então você pode usar apenas if e then para verificar uma condição – neste caso, chamamos o condicional de condicional simples.
Operadores comuns em condicionais
No Shell, podemos usar diferentes tipos de operadores para fazer as verificações condicionais:
Operadores de comparação numérica:
- -eq: Igual a
- -ne: Diferente de
- -gt: Maior que
- -lt: Menor que
- -ge: Maior ou igual a
- -le: Menor ou igual a
Operadores de comparação de strings
- =: Igual a
- !=: Diferente de
- -z: Verifica se a string tem comprimento zero (vazia)
- -n: Verifica se a string não é vazia
Operadores de teste de arquivo
- -e: Verifica se o arquivo existe
- -d: Verifica se o diretório existe
- -f: Verifica se é um arquivo regular
- -s: Verifica se o arquivo não está vazio
- -r, -w, -x: Verifica se o arquivo tem permissão de leitura, escrita ou execução, respectivamente
Exemplo básico de if-then (condicional simples)
No exemplo abaixo, verificamos se o valor de uma variável é igual a 10:
#!/bin/bash numero=10 if [ $numero -eq 10 ]; then echo "O número é igual a 10" fi
Esse script imprime “O número é igual a 10” porque a condição [ $numero -eq 10 ] é verdadeira.
Exemplo de if-then-else (condicional composto)
Agora, um exemplo com a estrutura completa if-then-else:
#!/bin/bash numero=20 if [ $numero -lt 15 ]; then echo "O número é menor que 15" else echo "O número é maior ou igual a 15" fi
Como o valor da variável $numero é 20, o script imprimirá “O número é maior ou igual a 15”.
Exemplo com elif (condicional encadeado)
A estrutura elif (else if) permite verificar múltiplas condições, sendo por isso conhecida como Condicional Encadeado:
#!/bin/bash numero=20 if [ $numero -lt 10 ]; then echo "O número é menor que 10" elif [ $numero -lt 20 ]; then echo "O número é menor que 20" else echo "O número é maior ou igual a 20" fi
Neste caso, o script irá mostrar a mensagem “O número é maior ou igual a 20” porque as duas primeiras condições são falsas.
Condicionais com strings
Para realizar comparações com strings, utilizamos os operadores = e !=. Exemplo:
#!/bin/bash nome="Alice" if [ "$nome" = "Alice" ]; then echo "Olá, Alice!" else echo "Você não é Alice." fi
Esse script verifica se o valor da variável nome é igual a “Alice”. Se for, exibe “Olá, Alice!”; caso contrário, exibe “Você não é Alice.”
Condicionais com arquivos
Verificações em arquivos também são bastante comuns. No exemplo abaixo verificamos se um arquivo existe no diretório atual:
#!/bin/bash arquivo="meuarquivo.txt" if [ -e "$arquivo" ]; then echo "O arquivo $arquivo existe." else echo "O arquivo $arquivo não existe." fi
Esse script usa o operador -e para verificar se o arquivo existe. A mensagem exibida dependerá da existência ou não do arquivo.
Condicionais com operadores lógicos AND (&&) e OR (||)
Também podemos combinar condições com operadores lógicos para criar verificações mais complexas.
Exemplo de condição com AND
#!/bin/bash numero=10 if [ $numero -gt 5 ] && [ $numero -lt 20 ]; then echo "O número está entre 5 e 20." fi
Esse script imprime “O número está entre 5 e 20” porque ambas as condições são verdadeiras.
Exemplo de condição com OR
#!/bin/bash dia="sábado" if [ "$dia" = "sábado" ] || [ "$dia" = "domingo" ]; then echo "É fim de semana!" else echo "É dia útil." fi
Esse script verifica se dia é igual a “sábado” ou “domingo”. Se for, exibe “É fim de semana!”.
Vamos fazer agora alguns exercícios para treinar melhor o conceito de condicionais em Shell Scripting.
Exercícios práticos
1. Crie um script que receba um número e exiba se ele é par ou ímpar.
2. Crie um script que receba um nome de arquivo e verifique se ele existe. Exiba uma mensagem de confirmação.
3. Crie um script que exiba a mensagem “Bom dia”, “Boa tarde” ou “Boa noite” com base na hora atual.
4. Crie um script que verifique se um arquivo tem permissão de leitura, escrita e execução.
5. Crie um script que receba dois números inteiros e exiba o maior entre eles.
Resolução dos exercícios
Exercício 1
#!/bin/bash numero=$1 if [ $((numero % 2)) -eq 0 ]; then echo "O número $numero é par." else echo "O número $numero é ímpar." fi
Exercício 2
#!/bin/bash arquivo=$1 if [ -e "$arquivo" ]; then echo "O arquivo $arquivo existe." else echo "O arquivo $arquivo não existe." fi
Exercício 3
#!/bin/bash hora=$(date +%H) if [ $hora -lt 12 ]; then echo "Bom dia!" elif [ $hora -lt 18 ]; then echo "Boa tarde!" else echo "Boa noite!" fi
Exercício 4
#!/bin/bash arquivo=$1 if [ -r "$arquivo" ]; then echo "O arquivo $arquivo tem permissão de leitura." else echo "O arquivo $arquivo NÃO tem permissão de leitura." fi if [ -w "$arquivo" ]; then echo "O arquivo $arquivo tem permissão de escrita." else echo "O arquivo $arquivo NÃO tem permissão de escrita." fi if [ -x "$arquivo" ]; then echo "O arquivo $arquivo tem permissão de execução." else echo "O arquivo $arquivo NÃO tem permissão de execução." fi
Exercício 5
#!/bin/bash num1=$1 num2=$2 if [ $num1 -gt $num2 ]; then echo "$num1 é maior que $num2." elif [ $num1 -lt $num2 ]; then echo "$num2 é maior que $num1." else echo "Os números são iguais." fi
Conclusão
Vimos nesta aula como trabalhar com estruturas de decisão condicional em scripts do shell bash. Nas próximas lições vamos estudar outras estruturas de programação também muito importantes, com destaque para as estruturas de repetição ou loops (laços).
Escreva um comentário