条件付き構造のセミコロン

条件付き構造のセミコロン

なぜ1つにセミコロンを追加し、もう1つに追加しないのですか?

結果は同じ

コード1

if [ "a" == "a" ]
then
 echo "true"
fi

コード2

if [ "a" == "a" ];
then
 echo "true";
fi

2番目のコード部分のセミコロンは不要ですか?

セミコロンはいつ必要ですか?

答え1

セミコロンは、行末が欠落している場合にのみ必要です。

if [ "a" == "a" ] ; then echo "true" ; fi

セミコロンがない場合、構文エラーが発生します。

見積もりに関するご質問がわかりません。もっと詳しく知ることができますか?

(しかし、=notを使用することは==移植性に優れており、POSIXと互換性があります。)

答え2

一部の人(例:/ me)は次のスタイルが好きなので、セミコロンがよく使われます。

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

したがって、then-keywordを条件行に配置すると、チョロバが書いたように新しいコマンドが開始されるために必要です。

条件付きチェックの引用符に関しては、通常、変数に何も割り当てられていない場合、例外が発生しないように変数とともに使用されます。これはより安全なスタイルで不要に見えるかもしれませんが、シェルプログラミングでも時々プログラムは変数に内容を割り当てることができない状況にあります。これにより、空の文字列が比較されるため、コマンドは引き続き機能します。

関連情報