我用谷歌搜索并尝试了很多东西,从来没有任何东西可以使用$ {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的非常模糊的特征.我已经从这篇文章中省略了大约半个小时的尝试,每个人都比以前更加扭曲!