シェルスクリプトは初めてです。
ksh(#!/bin/ksh
)と書かれたコードを見ると、1つのスクリプトでelse if
とElif
が使用されていることがわかります。
では、シェルスクリプトでのelse if
とElif
の違いは何ですか。
私は1つの文で答えを試します:Elif
を使用する場合、1つのif節を扱います。_else if
_を2つのif節。
次の簡単な例を見てください。
_testone() {
if [[ $CASE == 1 ]]; then
echo Case 1.
Elif [[ $CASE == 2 ]]; then
echo Case 2.
else
echo Unknown case.
fi
}
_
各ケースが同じ階層レベルにあることがわかるように、これは正式に(整然としたインデントが意味をなす場合があります)1つの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
}
_
正式に2つのカスケードされたif節があり、それに応じて2つの終了fi
ステートメントがあります。プレーズは、私が_else if
_を1行(質問のように)または2行(私の例のように)で書き込んでも、ここでは違いがないことに注意してください。
両方のフォームが同じスクリプトで使用される理由は私の推測:すでに完全なif節が記述されているが、それを既存のif節にコピー/カットアンドペーストする必要がある(論理的な理由)場合、最終的に_else if
_。しかし、完全なif節を最初から作成する場合は、おそらくIMHOの読みやすい形式Elif
を使用します。