8

==周りのスペースが比較結果を変える理由を誰かが説明できますか?以下:

if [[ 1 == 2 ]] ; then echo ok ; fi

何も印刷しませんが

if [[ 1==2 ]] ; then echo ok ; fi

プリントok

4

2 に答える 2

15

==「1==2」は単一の4文字の文字列であり、演算子を含む式ではありません。空でない文字列は、条件式のコンテキストで常にtrueと評価されます[[ ... ]]==演算子の周囲には空白が必須です。

の他のすべてと同様にbash、の内容[[ ... ]]は単に空白で区切られた引数のリストです。bash文法は条件式を解析する方法を知りませんが、、、のような3つの引数のリストを、複合コマンドのコンテキストで解釈する方法を1知って==います2[[ ... ]]

于 2013-03-12T15:33:06.283 に答える
4

単なる文字列なので、テストを検討してください。

[[ foobar ]]

になりますtrue

これは、次の例のように変数が設定されているかどうかをテストするのに役立ちます。

x='foobar'
[[ $x ]] # true

そして今

x=''
[[ $x ]] # false

ついに

テスト式ではスペースは必須です

于 2013-03-12T15:33:05.730 に答える