这是一个简单的bash脚本:
a="asd"
b="qf"
echo "$a.$b"
echo "$a_$b"
它的输出是:
asd.qf
qf
为什么第二行不是“asd_qf
”而是“qf
”?
答案 0 :(得分:4)
因为您尚未定义名为a_
的变量。要使第二个打印输出正常工作,请使用:
echo "${a}_$b"
答案 1 :(得分:3)
您的第二个echo
显示未设置的变量$a_
的值。
使用echo "${a}_$b"
答案 2 :(得分:3)
shell有关于变量名称的内容的规则,$a_
被解释为名为a_
的变量(没有带有该名称的变量,因此其值为空)。
您始终可以添加明确的大括号。在这种情况下,${a}_$b
将清楚地标识变量名称是什么,结果将是您期望的结果。