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

aga*_*bio 5 zsh

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

jas*_*yan 2

这是 Zsh 的参数扩展之一,应用于$*

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

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

\n\n

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

\n\n

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

\n