5
爲什麼autoconf腳本中的條件語句在變量前加「x」?例如,通過GNU提供以測試用於升壓的宏具有條件句如爲什麼autoconf腳本中的條件在變量前加「x」?
if test "x$want_boost" = "xyes"; then
這是爲什麼不定義爲:
if test "$want_boost" = "yes"; then
爲什麼autoconf腳本中的條件語句在變量前加「x」?例如,通過GNU提供以測試用於升壓的宏具有條件句如爲什麼autoconf腳本中的條件在變量前加「x」?
if test "x$want_boost" = "xyes"; then
這是爲什麼不定義爲:
if test "$want_boost" = "yes"; then
在一些早期的殼,測試對於一個空字符串變量WASN」就像現在一樣簡單,所以最好的選擇是看看「x $ variable」是否等於「x」。此外,因爲這顯然使用test
,這比試圖正確引用/轉義序列像'$ x!=「y」'而不會失去理智和/或可移植性更簡單。
澄清:「並不像現在那麼容易」意味着許多shell是bug,並且不會正確評估帶有空字符串的命令,如'test「」=「foo」' –
* other * reason this有必要的是,如果'$ variable'擴展成以短劃線開頭的東西,'test'可能會將其解釋爲一個選項而不是要比較的字符串。在現代貝殼中,等號優先,但並非總是如此。 – zwol