2

他の Bash スクリプトを見ると、変数を次のように比較している人$S == $Tいます。"$S" == "$T"

いくつかの実験は、両方が同じことを示唆しているようです。以下のデモはequal、どちらの場合も印刷されます (GNU bash、バージョン 4.2.37 でテスト済み)。

#!/usr/bin/env bash

S="text"
T="text"

if [[ $S == $T ]]; then
  echo "equal"
fi

if [[ "$S" == "$T" ]]; then
  echo "equal"
fi

$S == $T私の質問: と の間に違いがある場合、"$S" == "$T"それは何ですか?

4

1 に答える 1

5

あなたが使用する場合[[、それらはほとんど同じですが、完全ではありません...

== および != 演算子が使用されている場合、演算子の右側の文字列はパターンと見なされ、以下のパターン マッチングで説明されているルールに従って一致します。[...] パターンの任意の部分を引用して、文字列として一致させることができます。

使用する場合[は、変数を空にしたり、空白を含めることができないことがわかっている場合を除き、引用符を使用する必要があります。

安全のために、おそらくすべての変数を常にクォートしたいと思うでしょう。

于 2013-04-25T08:00:11.050 に答える