Eu tento uma resposta em uma frase: Se você usa elif
, lida com uma cláusula if , se você usa else if
com duas cláusulas if .
Veja estes exemplos simples:
testone() {
if [[ $CASE == 1 ]]; then
echo Case 1.
elif [[ $CASE == 2 ]]; then
echo Case 2.
else
echo Unknown case.
fi
}
Isso é formalmente (a indução arrumada faz sentido às vezes) uma cláusula if, como você pode ver, que cada caso está no mesmo nível de hierarquia.
Agora, a mesma função com else if
:
testtwo() {
if [[ $CASE == 1 ]]; then
echo Case 1.
else
if [[ $CASE == 2 ]]; then
echo Case 2.
else
echo Unknown case.
fi
fi
}
Você tem formalmente duas cláusulas if em cascata e, consequentemente, duas instruções fi
de fechamento. Por favor, note que não faz diferença aqui se eu escrevo else if
em uma linha (como na sua pergunta) ou em duas linhas (como no meu exemplo).
Meu palpite por que ambos os formulários são usados no mesmo script: Se você já tem uma cláusula if completa escrita, mas precisa (motivos lógicos) para copiar / cortar & cole isso em uma cláusula if existente, você acaba com else if
. Mas quando você escreve a completa cláusula if do zero, você provavelmente usa o formulário IMHO mais simples para ler elif
.