小编Fir*_*ume的帖子

Bash:如何使用运算符参数扩展$ {parameter @ operator}?

我用谷歌搜索并尝试了很多东西,从来没有任何东西可以使用$ {parameter @ operator}.我找到的只是更多链接到相同的文档.因此,我认为通过实际例子得到正确答案对其理解非常有帮助.

文件说:

$ {参数@操作}

扩展可以是参数值的变换,也可以是参数本身的信息,具体取决于运算符的值.每个运营商都是一个字母:

Q
扩展是一个字符串,它是以可以重复用作输入的格式引用的参数值.

它还说引用:

3.1.2引用
引用用于删除shell中某些字符或单词的特殊含义.

所以我的理由是这个(特殊字符$)的输出:

a="To be reused as an input string, \$0 needs to be quoted"
echo ${a@Q}
Run Code Online (Sandbox Code Playgroud)

应该是这个(在""之间,'\'被删除,所以需要再次引用作为输入):

To be reused as an input string, \$0 needs to be quoted
Run Code Online (Sandbox Code Playgroud)

但我得到:

bash: ${a@Q}: bad substitution
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的组合:

${a@q}, "${a@Q}", a='To be reused as an input string, $0 needs to be quoted'
Run Code Online (Sandbox Code Playgroud)

无济于事.

实际上,我尝试使用的任何运算符总是会产生错误的替换错误.这些似乎是bash的非常模糊的特征.我已经从这篇文章中省略了大约半个小时的尝试,每个人都比以前更加扭曲!

bash quoting operator-keyword parameter-expansion

9
推荐指数
2
解决办法
1172
查看次数