奇怪的贝壳行为

时间:2012-07-07 06:31:29

标签: shell

这是一个简单的bash脚本:

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

它的输出是:

asd.qf
qf

为什么第二行不是“asd_qf”而是“qf”?

3 个答案:

答案 0 :(得分:4)

因为您尚未定义名为a_的变量。要使第二个打印输出正常工作,请使用:

echo "${a}_$b"

答案 1 :(得分:3)

您的第二个echo显示未设置的变量$a_的值。

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

答案 2 :(得分:3)

shell有关于变量名称的内容的规则,$a_被解释为名为a_的变量(没有带有该名称的变量,因此其值为空)。

您始终可以添加明确的大括号。在这种情况下,${a}_$b将清楚地标识变量名称是什么,结果将是您期望的结果。