2012-07-07 99 views
1

下面是一個簡單的bash腳本:奇怪的外殼行爲

a="asd" 
b="qf" 
echo "$a.$b" 
echo "$a_$b" 

它的輸出是:

asd.qf 
qf 

爲什麼第二行是不是 「asd_qf」,而是 「qf」?

回答

4

因爲您尚未定義名爲a_的變量。對於第二打印工作,使用方法:

echo "${a}_$b" 
3

你的第二個echo顯示變量$a_的值未設置。

使用echo "${a}_$b"

3

shell有什麼可以在變量名去規則,$a_被解釋爲命名a_變量(沒有與該名稱,因此它的值是空的沒有變化)。

您可以隨時添加大括號以明確。在這種情況下,${a}_$b將明確標識變量名稱,結果將成爲您期望的結果。