一尘不染

如何在Bash脚本中回显“ $ x_ $ y”?

linux

非常有趣的是,如果您打算0_1使用代码与Bash 一起显示

x=0
y=1
echo "$x_$y"

那么它只会显示

1

我试过了echo "$x\_$y",不起作用。

我如何回显表格$x_$y?我将在文件名字符串上使用它。


阅读 286

收藏
2020-06-02

共1个答案

一尘不染

由于允许变量名中带有下划线,因此命令:

echo "$x_$y"

正在尝试回显${x_}(在您的情况下可能为空),然后是${y}。这样做的原因是因为参数扩展是一个贪婪的操作-
$在变量名后将使用尽可能多的合法字符。

手册的相关部分bash指出:

$字符引入参数扩展,命令替换或算术扩展。

可以将要扩展的参数名称或符号括在括号内,该括号是可选的,但 用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。

使用花括号时,匹配的结尾花括号是第一个}不被反斜杠或加引号的字符串引起的转义,而不是嵌入的算术扩展,命令替换或参数扩展。

因此,该解决方案是确保_ 作为第一变量,它是可以做到的一部分进行处理:

echo "${x}_${y}"

我倾向于像这样做 所有的 bash变量,甚至是独立的变量:

echo "${x}"

因为它更明确,而且我在过去被咬过很多次:-)

2020-06-02