混合参数和命令替换

时间:2018-02-03 12:12:34

标签: zsh substitution

我找到了这段代码(简化)

while read item; do
  echo -n "${(q)item} "
done

从这里https://github.com/junegunn/fzf/blob/master/shell/key-bindings.zsh#L12

我不理解表达式"${(q)item} "

什么是变量q,我没有找到任何声明,是否是命令替换?为什么括号在花括号内使用?这种结构的含义是什么?

1 个答案:

答案 0 :(得分:1)

${指定parameter expansion flags后立即使用括号。 q标志用于引用扩展中的特殊字符。

  

在带有反斜杠的结果字中引用shell特有的字符;使用$' \ NNN'来引用不可打印或无效的字符。形式,每个八位字节都有单独的引号。