如何回声“$ X_ $ Y”在bash脚本?(How to echo “$x_$y” in bash

2019-07-18 08:54发布

如果你打算使用的代码,显示一个类似“0_1”使用bash这是非常有趣

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

那么它只会显示

1

我尝试echo "$x\_$y" ,它不工作。

所以我的问题是如何回应的形式$ X_ $ Y? 我将它用在一个文件名字符串。

Answer 1:

由于变量名被允许在他们下划线,下面的命令:

echo "$x_$y"

试图呼应${x_} (这可能是空的,你的情况),其次是${y} 这样做的原因是因为参数扩展是一个贪婪的操作-它会尽可能多的合法字符尽可能后$ ,形成一个变量名。

的的相关部分bash手册页指出:

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

参数名称或符号,就能够扩大可以用括号括起来,这是可选的,但有助于保护变量从文字扩展紧随其后这可以解释为名称的一部分。

当使用大括号,括号结束所述匹配是所述第一}没有反斜杠或引用字符串内逃脱,而不是内嵌入的算术扩展,命令替换,或参数扩展。

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

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

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

echo "${x}"

因为它更明确了,我已经在过去被咬了很多次:-)



Answer 2:

这条路:

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


Answer 3:

包装在大括号:

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



Answer 4:

只是逆势,你也可以这样做:

echo $x'_'$y

你可以引述和不带引号的部分相邻之间没有空格。 而且,由于'不是一个变量名合法的字符,bash将替换仅$x 。 :)



文章来源: How to echo “$x_$y” in bash script?