Я пытаюсь ответить в одном предложении: если вы используете, elif
вы имеете дело с одним предложением if, если вы используете else if
с двумя предложениями if .
Посмотрите на эти простые примеры:
testone() { if [[ $CASE == 1 ]]; then echo Case 1. elif [[ $CASE == 2 ]]; then echo Case 2. else echo Unknown case. fi }
Это формально (аккуратный отступ иногда имеет смысл) одним условием if, поскольку вы можете видеть, что каждый случай находится на одном и том же уровне иерархии.
Теперь та же функция с else if
:
testtwo() { if [[ $CASE == 1 ]]; then echo Case 1. else if [[ $CASE == 2 ]]; then echo Case 2. else echo Unknown case. fi fi }
Формально у вас есть два каскадных if-предложения и, соответственно, два заключительных fi
оператора. Обратите внимание, что здесь нет разницы, пишу ли я else if
в одну строку (как в вашем вопросе) или в две строки (как в моем примере).
Я догадываюсь, почему обе формы используются в одном и том же сценарии: если у вас уже написано полное предложение if, но вам нужно (логические причины) скопировать / вырезать и вставить его в существующее предложение if, вы в конечном итоге получите else if
. Но когда вы пишете полное if-предложение с нуля, вы, вероятно, используете упрощенную для чтения форму IMHO elif
.