非常有趣的是,如果您打算0_1使用代码与Bash 一起显示
0_1
x=0 y=1 echo "$x_$y"
那么它只会显示
1
我试过了echo "$x\_$y",不起作用。
echo "$x\_$y"
我如何回显表格$x_$y?我将在文件名字符串上使用它。
$x_$y
由于允许变量名中带有下划线,因此命令:
echo "$x_$y"
正在尝试回显${x_}(在您的情况下可能为空),然后是${y}。这样做的原因是因为参数扩展是一个贪婪的操作- $在变量名后将使用尽可能多的合法字符。
${x_}
${y}
$
手册的相关部分bash指出:
bash
该$字符引入参数扩展,命令替换或算术扩展。 可以将要扩展的参数名称或符号括在括号内,该括号是可选的,但 用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。 使用花括号时,匹配的结尾花括号是第一个}不被反斜杠或加引号的字符串引起的转义,而不是嵌入的算术扩展,命令替换或参数扩展。
该$字符引入参数扩展,命令替换或算术扩展。
可以将要扩展的参数名称或符号括在括号内,该括号是可选的,但 用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。
使用花括号时,匹配的结尾花括号是第一个}不被反斜杠或加引号的字符串引起的转义,而不是嵌入的算术扩展,命令替换或参数扩展。
}
因此,该解决方案是确保_被 不 作为第一变量,它是可以做到的一部分进行处理:
_
echo "${x}_${y}"
我倾向于像这样做 所有的 bash变量,甚至是独立的变量:
echo "${x}"
因为它更明确,而且我在过去被咬过很多次:-)