以下のコード
if [ $a == "apple" ];
then
echo "True"
else
echo "False"
fi
()の場合は"True"
()を出力します。ワイルドカードを使用すると比較が失敗します。"False"
a="apple"
a="plum"
if [ $a == "appl"* ];
[
次のように置き換えられた場合[[
:
if [[ $a == "appl"* ]];
[
これらのin a stateとin a state[[
の違いは何ですかif
?
答え1
[
はコマンドです(デフォルトでは command の変形test
)。[[
これは多くのシェルに組み込まれている機能です。foo*
そこに書くとき[...]
ファイル名拡張子(別名ワイルドカード)は内部で発生します。[[...]]
パターンマッチング発生する。[[
ただし、[
移植性が問題になる場合は使用しないでください。[
[[
構文の一部ではないので、 のようif
に使用できます[ "$exit" = 'yes' ] && exit
。- 私が知っている限り、2番目は多くのシェルで許可されていますが、POSIXと互換性がありません
[...]
。=
==
ちなみに、変数を二重引用符で囲む方法を知っていても、変数を二重引用符で囲むことをお勧めします。噴射パフォーマンスします。