Uma declaração if
normalmente se parece com
if commands1
then
commands2
else
commands3
fi
A cláusula then
é executada se o código de saída de commands1
for zero. Se o código de saída for diferente de zero, a cláusula else
será executada. commands1
pode ser
simples ou complexo. Pode, por exemplo, ser uma sequência de um ou mais pipelines separados por um dos operadores ;
, &
, &&
ou ||
. As condições if
mostradas abaixo são apenas casos especiais de commands1
:
-
if [ condition ]
Este é o comando tradicional shell
test
. Está disponível em todos os shells do POSIX. O comando test define um código de saída e a instruçãoif
age de acordo. Testes típicos são se um arquivo existe ou um número é igual a outro. -
if [[ condition ]]
Esta é uma nova variação atualizada em
test
de ksh que bash e zsh também suportam. Esse comandotest
também define um código de saída e a instruçãoif
age de acordo. Entre seus recursos estendidos, ele pode testar se uma string corresponde a uma expressão regular. -
if ((condition))
Outra extensão ksh que bash e zsh também suporta. Isso realiza aritmética. Como resultado da aritmética, um código de saída é definido e a instrução
if
age de acordo. Retorna um código de saída de zero (verdadeiro) se o resultado do cálculo aritmético for diferente de zero. Como[[...]]
, este formulário não é POSIX e, portanto, não é portável. -
if (command)
Isso executa o comando em um subshell. Quando o comando é concluído, ele define um código de saída e a instrução
if
age de acordo.Uma razão típica para o uso de um subshell como esse é limitar os efeitos colaterais de
command
secommand
exigir atribuições de variáveis ou outras alterações no ambiente do shell. Tais mudanças não permanecem depois que a subshell é concluída. -
if command
é executado e a declaração
if
age de acordo com seu código de saída.