由于允许变量名中带有下划线,因此命令:
echo "$x_$y"
正在尝试回显
${x_}(在您的情况下可能为空),然后是
${y}。这样做的原因是因为参数扩展是一个贪婪的 *** 作-
$在变量名后将使用尽可能多的合法字符。
手册的相关部分
bash指出:
该
$字符引入参数扩展,命令替换或算术扩展。可以将要扩展的参数名称或符号括在括号内,该括号是可选的,但 用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。
使用花括号时,匹配的结尾花括号是第一个
}不被反斜杠或加引号的字符串引起的转义,而不是嵌入的算术扩展,命令替换或参数扩展。
因此,该解决方案是确保
_被 不 作为第一变量,它是可以做到的一部分进行处理:
echo "${x}_${y}"
我倾向于像这样做 所有的 bash变量,甚至是独立的变量:
echo "${x}"
因为它更明确,而且我在过去被咬过很多次:-)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)