Controle de fluxo shell script: IF – Linux

Introdução

Esse material, em desenvolvimento, é voltado para pessoas que estão no nível inicial de desenvolvimento de scripts em Shell e também é utilizado como referências de estudos para as aulas do curso técnico em informática ministrado no Senac São Carlos.


Controle de fluxo – IF

O Shell Script, como visto em Introdução ao Shell Script – Linux “é um conjunto de instruções e comandos a serem executados passo a passo por um interpretador”. Em outras palavras pode-se afirmar que o Shell Script é uma linguagem de programação interpretada, ou seja, não necessita de um compilador para criar um programa executável.

Assim como em outas linguagens de programação o Shell Script utiliza as estruturas básicas de controle de fluxo. Nesse momento iremos abordar o IF. Antes de entendermos a sintaxe do IF em Shell Script vamos abordar de forma genéria a execução do controle de fluxo com IF.

Imagem com um diagrama de controle de fluxo IF.

A imagem acima ilustra a execução do controle de fluxo com IF. Na imagem à esquerda vemos que se a condição C for verdadeira a instrução A será executada. Na imagem à direita pode-se ver que se a condição C for verdadeira a instrução A será executada, assim como no exemplo da imagem à esquerda. Porém se a condição C for falsa a instrução B será executada.


A sintaxe no Shell Script

A sintaxe do IF é da seguinte forma.

if [ condição ]; then
     comando
fi

Ou seja, o comando será executado se a condição for verdadeira.

A sintaxe do IF e ELSE é da forma:

if [ condição ]; then
     comando A
else
     comando B
fi

Assim como o exemplo à direita na imagem acima se a condição for verdadeira o comando A será executado. Se a condição for falsa o comando B será executado.


Comparações básicas no Shell Script

Essas serão as formas de comparações que utilizaremos em Shell Script:

  • -eq: é igual à
  • -ne: não é igual à
  • -lt: é menor que
  • -le: é menor ou igual à
  • -gt: é maior que
  • -ge: é maior ou igual à

Exemplos de aplicações

Vamos ao nosso primeiro exemplo:

#!/bin/bash
echo "-------------------------------------"
echo "|                                   |"
echo "|            Data e hora            |"
echo "|                                   |"
echo "-------------------------------------"
echo "| Digite:                           |"
echo "| 1 - para ver a data               |"
echo "| qualquer outra - para ver a hora  |"
echo "-------------------------------------"
read cond
if [ $cond -eq 1 ]; then
date +%D
else
date +%T
fi

O nosso primeiro programa tem a tarefa de exibir a data atual caso o valor inserido seja 1 ou então mostrar a hora atual caso o valor inserido não seja 1. Nesse caso para que a condição seja verdadeira o valor inserido no teclado pelo usuário deve ser “1”, assim o programa executará o comando date +%D, senão ele executará o comando date +%T.

Vamos ao segundo exemplo:

#!/bin/bash
echo "-------------------------------------"
echo "|                                   |"
echo "|               SOMA                |"
echo "|                                   |"
echo "-------------------------------------"
echo "Digite o primeiro número: "
read num1
echo "Digite o segundo número: "
read num2
echo "-------------------------------------"
echo "| Digite:                           |"
echo "| 1 - para fazer a soma             |"
echo "-------------------------------------"
read cond
if [ $cond -eq 1 ]; then
echo `expr $num1 + $num2`
else
echo "Não consegui fazer a soma"
fi

Com o script acima temos novamente que inserir o valor 1 para a condição ser verdadeira e a soma ser realizada com sucesso. Ou seja, após inserir os números a serem somado devemos adicionar o valor 1 para que seja executado o comando echo `expr $num1 + $num2` – comando que exibe a soma na tela. Se não for satisfeita essa condição o comando a ser executado será echo “Não consegui fazer a soma”.

 

Deixe um comentário