シェルスクリプト「if」文で参照されている変数の違いは何ですか?

シェルスクリプト「if」文で参照されている変数の違いは何ですか?

これら2つのBash ifの問い合わせの違いは何ですか?例えば

if [ "$FOO" = "true" ]; then

比較済み

if [ $FOO = "true" ]; then

違いは何ですか?これら2つの文は同じ効果を持つようです。

ベストアンサー1

値が$FOOワイルドカード文字を含まない単一の単語の場合、2つは同じです\[*?

$FOO引用符のないバージョンは、割り当てられていない、空白、または複数の単語がある場合(たとえば、空白またはを含む)、$IFS構文エラーです。正しい単語の順序(たとえば)の場合、0 -eq 0 -o false結果は任意である可能性があります。したがって、シェルスクリプトでは常に変数を引用するのが最善です。

ところで、"true"引用は必要ありません。

おすすめ記事