if
ステートメントの構文は次のとおりです。
if <list>; then <list>; [elif <list>; then <list>;]* [else <list>;]? fi
ここで、は、 、、またはで<list>
区切られた「パイプライン」の任意のシーケンスです。(パイプラインは、記号で区切られた 1 つ以上の単純なコマンドです。);
&&
||
|
if
ステートメントは、最初に に続く を実行し、リターン コードをチェックすることによって評価されます<list>
。if
これは、最後に実行された単純なコマンドのリターン コードになります。それに基づいて、<list>
以下を実行するかthen
(最初のリストが成功した場合)、またはelif
テストおよび/またはelse
句を続行するかが決定されます。
その構文のどこにも a は[
現れませんが、これには正当な理由があります。[
実際にはコマンドです。実際、これは; のほぼ同義語ですtest
。違いは[
、最後の引数が であると主張すること]
です。
使用すると便利な場合もあります[
(ただし、ほとんどの場合は を使用する方が便利です[[
が、それは別の日のエッセイです) が、決して必須ではありません。コマンドが成功したかどうかをテストするだけの場合は、次のようにします。
if isValidType "$msgType"; then
# it's valid
else
# it's not valid
fi
うまくいかなかった場合にのみ何かをする必要がある場合は、!
特別な形式を使用します。
if ! isValidType "$msgType"; then
# it's not valid
fi