2012-07-07 97 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将明确标识变量名称,结果将成为您期望的结果。