linux 开启ip回显,关于linux:如何在Bash脚本中回显“ $ x_ $ y”?

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

x=0

y=1

echo"$x_$y"

那么它只会显示

1

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

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

在vim中启用语法着色。 您将立即发现类似这样的简单错误。

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

echo"$x_$y"

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

bash联机帮助页的相关部分指出:

The $ character introduces parameter expansion, command substitution, or arithmetic expansion.

The parameter name or symbol to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name.

When braces are used, the matching ending brace is the first } not escaped by a backslash or within a quoted string, and not within an embedded arithmetic expansion, command substitution, or parameter expansion.

因此,解决方案是确保_不会被视为第一个变量的一部分,可以通过以下方式完成:

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

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

echo"${x}"

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

使用具有语法突出显示功能的良好文本编辑器有助于沉浸式检测这些故障,而不会使所有代码都带有显式${x}表示法。

这条路:

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

0_1

用大括号括起来:

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

谁知道为什么bash如此? echo"$x.$y"。 使用dot可以正常工作。

因为变量中可以带有下划线但不能带有点-带下划线,它认为您具有名为$x_和$y的变量。 但是带点不会混淆

变量名不能有点,值可以有任何东西

只是为了逆势而上,您还可以这样做:

echo $x'_'$y

引用和未引用的部分可以彼此相邻,并且之间没有空格。并且由于'不是变量名的合法字符,因此bash将仅替换$x。 :)

这对我的情况不起作用

@ tomriddle_1234:它以什么方式不起作用? 如果将要回显的参数括在双引号中,它将无法正常工作,但是由于某种原因,该命令在编写时没有双引号。

并且,以另一种方式处理它:x=0; y=1; z=_; echo"$x$z$y";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值