2012-06-29 1 views
5

なぜautoconfスクリプト内の条件文は変数に "x"を付けるのですか?これは以下のように定義されていない理由、例えば、ブーストをテストするためにGNUによって提供されるマクロは、なぜautoconfスクリプト内の条件文は変数に "x"を付けるのですか?

if test "x$want_boost" = "xyes"; then 

などの条件式を有する:「いくつかの初期のシェルで

if test "$want_boost" = "yes"; then 

答えて

7

空の文字列をテストする、可変wasn tは今のように簡単なので、 "x $ variable"が "x"に等しいかどうかを確認するのが最善の方法でした。また、それは明らかにtestを使用しているので、 '$ x!= "y"'のような適切な引用符/エスケープシーケンスを正当性や移植性を失うことなく簡単にしようとするより簡単です。

+2

"今のように簡単ではありませんでした"とは、多くのシェルがバグがあり、 'test" "=" foo "'のような空文字列でコマンドを適切に評価しないことを意味します。 –

+1

* other * reason this '$ variable'がダッシュで始まるものに展開された場合、' test'はそれを比較する文字列ではなくオプションとして解釈するかもしれないということです。現代のシェルでは、等号が優先されますが、必ずしもそうではありませんでした。 – zwol

関連する問題