Ich versuche, eine Antwort in einem Satz zusammen : Wenn Sie elif
Sich mit einer if-Klausel, wenn Sie verwenden, else if
mit zwei if-Klauseln .
Schauen Sie sich diese einfachen Beispiele an:
testone() { if [[ $CASE == 1 ]]; then echo Case 1. elif [[ $CASE == 2 ]]; then echo Case 2. else echo Unknown case. fi }
Dies ist formal (eine feste Einsicht macht manchmal Sinn) eine if-Klausel, da sich jeder Fall auf derselben Hierarchieebene befindet.
Nun die gleiche Funktion mit else if
:
testtwo() { if [[ $CASE == 1 ]]; then echo Case 1. else if [[ $CASE == 2 ]]; then echo Case 2. else echo Unknown case. fi fi }
Sie haben formal zwei kaskadierte If-Klauseln und dementsprechend zwei abschließende fi
Anweisungen. Bitte beachten Sie, dass es hier keinen Unterschied macht, ob ich else if
in einer Zeile schreibe (wie in Ihrer Frage) oder in zwei Zeilen (wie in meinem Beispiel).
Meine Vermutung, warum beide Formulare im selben Skript verwendet werden: Wenn Sie bereits eine vollständige If-Klausel geschrieben haben, die jedoch aus logischen Gründen in eine vorhandene If-Klausel kopiert / ausgeschnitten und in eine vorhandene If-Klausel eingefügt werden muss, landen Sie bei else if
. Wenn Sie jedoch die vollständige if-Klausel von Grund auf neu schreiben, verwenden Sie wahrscheinlich das einfach zu lesende IMHO-Formular elif
.