==
周りのスペースが比較結果を変える理由を誰かが説明できますか?以下:
if [[ 1 == 2 ]] ; then echo ok ; fi
何も印刷しませんが
if [[ 1==2 ]] ; then echo ok ; fi
プリントok
==
周りのスペースが比較結果を変える理由を誰かが説明できますか?以下:
if [[ 1 == 2 ]] ; then echo ok ; fi
何も印刷しませんが
if [[ 1==2 ]] ; then echo ok ; fi
プリントok
==
「1==2」は単一の4文字の文字列であり、演算子を含む式ではありません。空でない文字列は、条件式のコンテキストで常にtrueと評価されます[[ ... ]]
。==
演算子の周囲には空白が必須です。
の他のすべてと同様にbash
、の内容[[ ... ]]
は単に空白で区切られた引数のリストです。bash
文法は条件式を解析する方法を知りませんが、、、のような3つの引数のリストを、複合コマンドのコンテキストで解釈する方法を1
知って==
います2
。[[ ... ]]
単なる文字列なので、テストを検討してください。
[[ foobar ]]
になりますtrue
。
これは、次の例のように変数が設定されているかどうかをテストするのに役立ちます。
x='foobar'
[[ $x ]] # true
そして今
x=''
[[ $x ]] # false
テスト式ではスペースは必須です