在zsh中,'$==*'这个习语是什么意思

在zsh中,'$==*'这个习语是什么意思

$==*我在我使用的几个 zsh 解决方案中发现了这个习惯用法。好像相当于$argv。但我不知道它是如何解释的。你能解释一下吗?

答案1

这是 Zsh 的其中之一参数扩展这里适用于$*

${=spec}
在spec的评估过程中使用SH_WORD_SPLIT的规则执行分词,但无论参数是否出现在双引号中;如果“=”加倍,则将其关闭。这会强制参数扩展在替换之前被分割成单独的单词,并使用 IFS 作为分隔符。在大多数其他 shell 中,这是默认完成的。

请参阅吉尔斯典型的彻底回答什么是分词?为什么它在 shell 编程中很重要用于上下文。

通常,zsh默认情况下不会进行单词拆分,因此据推测,这是为了确保即使以某种方式启用$*该选项(例如通过 a )也不会拆分。SH_WORD_SPLITemulate sh

但是,在大多数情况下,您宁愿使用"$@"(请注意此处很重要的引号)而不是$==*. $==*(就像关闭$*时一样)仅扩展到SH_WORD_SPLIT非空位置参数, while"$@"扩展为所有位置参数(无论SH_WORD_SPLIT, 并且适用于所有类似 Bourne 的 shell)。

相关内容