Ver Indice Geral da Apostila de Shell Script
O Else e o Elif
O ELSE e o ELIF são complementos para o IF.
ELSE pode ser traduzido por "SENÃO".
Exemplo:
SE chover fico em casa, SENÃO vou a praia
ELIF é abreviação para ELSE IF, que pode ser traduzido por "SENÃO SE"
Exemplo:
SE chover fico em casa, SE NÃO chover e SE fizer calor, vou a sorveteria
Um código como Exemplo para ELSE:
| exemplo_else.sh |
lado="6"
if [ $lado -gt "7" ]
then
echo "Lado é Maior que Sete"
else
echo "Lado é Menor ou Igual a Sete"
fi
|
| Mostrará na tela |
|
Lado é Menor ou Igual a Sete
|
Um código como Exemplo para ELIF:
| exemplo_elif.sh |
lado="6"
if [ $lado -gt "7" ]
then
echo "Lado é Maior que Sete"
elif [ $lado -lt "7" ]
then
echo "Lado é Menor que Sete"
else
echo "Lado é Igual a Sete"
fi
|
| Mostrará na tela |
|
Lado é Menor que Sete
|
Atenção! Repare que após definir a condição para ELIF deve-se usar o termo THEN. Mas ao usar o ELSE, o termo THEN não é utilizado
Não Confunda Alhos com Bugalhos!
Você deve estar se perguntando qual a utilidade do ELIF, já que você poderia criar mais uma condição IF e ter o mesmo resultado.
Pensando um pouco você percebe que o ELIF torna o script mais curto, mesmo que o script funcione igualmente pras duas formas.
Mas em alguns casos o ELIF é muito importante, e simplificará muito mais seu script.
Vou postar 2 scripts, o Primeiro faz a mesma coisa que o anterior, mas usando 3 IFs e o outro mostra muito mais a importância do ELIF
| 3ifs.sh |
lado="6"
if [ $lado -gt "7" ]
then
echo "Lado é Maior que Sete"
fi
if [ $lado -lt "7" ]
then
echo "Lado é Menor que Sete"
fi
if [ $lado -eq "7" ]
then
echo "Lado é Igual a Sete"
fi
|
| Mostrará na tela |
|
Lado é Menor que Sete
|
O script ficou um pouco maior, mas ainda mostra o resultado corretamente.
Agora veja esse script:
| if_com_defeito.sh |
x="3"
if [ $x -le "3" ]
then
echo "X é menor ou igual a 3"
fi
if [ $x -le "7" ]
then
echo "X é maior que 3 e menor ou igual a 7"
else
echo "X é maior que 7"
fi
|
| Mostrará na tela |
X é menor ou igual a 3
X é maior que 3 e menor ou igual a 7
|
Você pode ver que uma das afirmações não é verdadeira. X não é maior que 3, como informou o script
Por que isso acontece?
Porque o ELIF só é executado quando nenhuma condição IF anterior tiver sido satisfeita.
Vou mostrar como seria a maneira de se utilizar 2 IFs nesse caso, só para ver como é muito mais complicado.
| if_corrigido.sh |
x="3"
if [ $x -le "3" ]
then
echo "X é menor ou igual a 3"
fi
if [[ $x -gt "3" && $x -le "7" ]]
then
echo "X é maior que 3 e menor ou igual a 7"
fi
if [[ $x -gt "7" ]]
then
echo "X é maior que 7"
fi
|
Atenção!Quando se usa o "ELIF" e o "ELSE" dentro do "IF",
as condições sempre são executadas na sequência em que aparecem.
Assim que uma condição é satisfeita, o script, executa a ação correspondente a essa condição e em seguida pára de verificar as condições.
Nesse caso, mesmo que MAIS de uma condição seja verdadeira ela não será executada.
Veja só:
| exemplo_if.sh |
x="3"
if [ $x -le "8" ]
then
echo "X é menor ou igual a 3"
elif [ $x -le "10" ]
then
echo "X é menor ou igual a 10"
elif [ $x -le "20" ]
then
echo "X é menor ou igual a 20"
fi
|
| Mostrará na tela |
|
X é menor ou igual a 3
|
Isso acontece porque o script verifica se a condição IF é verdadeira.
Como ela é verdadeira, o script executa a ação dentro do IF e pára de verificar as outras condições
Nota: 9
Postado em: 2008-03-09
Ver Indice Geral da Apostila de Shell Script