Construção Condicional if..then..else - Linux

A construção condicional if..then executa um conjunto de comandos se uma determinada condição for satisfeita. Ela tem a seguinte sintaxe:

if condição
then
    comandos
fi

Após if, especifica-se a condição, que é uma expressão de teste. Depois de then, há um conjunto de comandos que são executados se a condição for verdadeira. A construção termina com a palavra fi.

Por exemplo, vamos definir um script chamado hello com o seguinte código:

#!/bin/bash
# Construção condicional if..then
a=5
b=5
    
if `test $a -eq $b`
then
    echo "a e b são iguais"
fi
echo "Fim do programa"
exit 0

Aqui, a condição test $a -eq $b verifica se as variáveis a e b são iguais. Se elas forem iguais, a condição é verdadeira, e os comandos após then são executados. Neste caso, é apenas um comando echo, que imprime a mensagem de igualdade no console. Após a construção if..then (após a palavra fi), há outro comando echo.

Vamos executar o script:

programicio@Programicio:~$ bash hello
a e b são iguais
Fim do programa

Podemos ver que as duas variáveis são iguais.

Vale notar que também poderíamos simplificar a condição da seguinte forma:

if [ $a -eq $b ]

Agora, vamos alterar os valores das variáveis no script:

#!/bin/bash
# Construção condicional if..then
a=6
b=5
    
if [ $a -eq $b ]
then
    echo "a e b são iguais"
fi
echo "Fim do programa"
exit 0

Como as variáveis agora não são iguais, a condição é falsa e os comandos após then não serão executados:

programicio@Programicio:~$ bash hello
Fim do programa

else

Com o operador else, podemos definir comandos que são executados se a condição for falsa. Por exemplo:

#!/bin/bash
if [ $1 -eq $2 ]
then
    echo "os números são iguais"
else
    echo "os números NÃO são iguais"
fi
echo "Fim do programa"
exit 0

Aqui, comparamos dois números, que são argumentos do script. Se eles são iguais, uma mensagem é exibida (após then), se não são iguais, outra mensagem é exibida (após else). Vamos testar o script passando alguns números ao executá-lo:

programicio@Programicio:~$ bash hello 5 5
os números são iguais
Fim do programa
programicio@Programicio:~$ bash hello 6 5
os números NÃO são iguais
Fim do programa

elif

Com o operador elif, podemos verificar condições adicionais e definir comandos que são executados se essas condições forem verdadeiras. Este operador é semelhante ao if:

elif condição
then
    comandos

Após elif, vem uma condição e, se for verdadeira, os comandos após then são executados.

Por exemplo, no caso da comparação de dois números, podem ocorrer três situações: o primeiro número é maior que o segundo, o primeiro número é menor que o segundo e os dois números são iguais. Vamos definir um script que trate todas essas situações:

#!/bin/bash
if [ $1 -gt $2 ]
then
    echo "O primeiro número é maior que o segundo"
elif [ $1 -lt $2 ]
then
    echo "O primeiro número é menor que o segundo"
else
    echo "Os dois números são iguais"
fi
echo "Fim do programa"
exit 0

Após if, verificamos a condição $1 -gt $2 (onde gt é a abreviação de "greater than", ou "maior que"). Se o primeiro número for maior que o segundo, os comandos após then são executados, e a construção if termina. Se a condição for falsa, verifica-se a condição após elif - $1 -lt $2. Se o primeiro número for menor que o segundo, os comandos após then são executados, e a construção if termina. Se a condição for falsa, os comandos após else são executados.

Vamos testar o script passando dois números:

programicio@Programicio:~$ bash hello 6 5
O primeiro número é maior que o segundo
Fim do programa
programicio@Programicio:~$ bash hello 4 5
O primeiro número é menor que o segundo
Fim do programa
programicio@Programicio:~$ bash hello 5 5
Os dois números são iguais
Fim do programa

A construção if..then..else pode conter várias expressões elif. Por exemplo:

#!/bin/bash
if [ $1 -eq 1 ]
then
    echo "o número é 1"
elif [ $1 -eq 2 ]
then
    echo "o número é 2"
elif [ $1 -eq 3 ]
then
    echo "o número é 3"
elif [ $1 -eq 4 ]
then
    echo "o número é 4"
fi
echo "Fim do programa"
exit 0

Neste caso, o argumento do script é comparado sequencialmente com uma série de números e, se a comparação for verdadeira, a mensagem correspondente é exibida.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com