我用谷歌搜索并尝试了很多东西,但从来没有用 ${parameter@operator} 得到任何东西。我发现的只是指向相同文档的更多链接。所以我认为用实际例子来正确回答对理解它很有帮助。
文档说:
${参数@操作员}
扩展要么是参数值的转换,要么是有关参数本身的信息,具体取决于运算符的值。每个运算符都是一个字母:
Q
扩展是一个字符串,它是以可重复用作输入的格式引用的参数值。
它还提到了引用:
3.1.2 引用
引用用于去除某些字符或单词对shell 的特殊含义。
所以我的推理是这个(特殊字符$)的输出:
a="To be reused as an input string, \$0 needs to be quoted"
echo ${a@Q}
应该是这样(在“”之间,'\'被删除,所以需要再次引用以用作输入):
To be reused as an input string, \$0 needs to be quoted
但我得到:
bash: ${a@Q}: bad substitution
我尝试了不同的组合:
${a@q}, "${a@Q}", a='To be reused as an input string, $0 needs to be quoted'
无济于事。
实际上,我尝试使用的任何运算符总是会产生错误的替换错误。这些似乎是 bash 非常晦涩的功能。我已经从这篇文章中省略了大约半小时的尝试,每一个都比以前更扭曲!