Linux - Construção Condicional if..then..else
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
fiApó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 0Aqui, 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 0Como 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 0Aqui, 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
    comandosApó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 0Apó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 0Neste 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.