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).

 

Sobre Fábio dos Reis (1223 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*