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