文字列比較前の追加文字

文字列比較前の追加文字

一部のbashコードでは、文字列を比較する前に追加の文字が追加されていることがわかります。誰でも理由を説明できますか?

if [ "x$VAR" = "xString" ]; then
...
fi

ベストアンサー1

これは、変数が設定解除される可能性を防ぐためのものであることがわかります。たとえば、次のことを考えてみましょう。

if [ $x = "hi" ]; then echo $x; fi

xに設定すると、hi動作は次のようになります。

$ if [ $x = "hi" ]; then echo $x; fi
hi
$

ただしx、設定されていない場合は左側に何もないため、エラーが発生します=

$ if [ $x = "hi" ]; then echo $x; fi
zsh: parse error: condition expected: =

引用符を追加すると問題が解決します。

$ if [ "$x" = "hi" ]; then echo $x; fi
$

また、空白以外の値を追加すると問題が解決します。

$ if [ x$x = "xhi" ]; then echo $x; fi
$ x=hi
$ if [ x$x = "xhi" ]; then echo $x; fi
hi
$

おすすめ記事