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