zshの '$==*'イディオムはどういう意味ですか?

zshの '$==*'イディオムはどういう意味ですか?

$==*私は私が使用したいくつかのzshソリューションでこのイディオムを見つけました。と同等のようです$argv。しかし、どのように説明されるのかわかりません。説明してもらえますか?

答え1

これはZshの一つですパラメータ拡張これは以下に適用されます$*

${=spec}
は、 SH_WORD_SPLIT ルールを使用してspec評価プロセス中に単語分割を実行しますが、パラメータが二重引用符で表されるかどうかには関係ありません。「=」が倍になると閉じます。これにより、IFSを区切り文字として使用して、置換の前にパラメータ拡張が別の単語に分割されます。他のほとんどのシェルでは、これは基本的に行われます。

Gillesの一般的に徹底的な答えを参照してください噴射とは何ですか?シェルプログラミングではなぜ重要なのですか?文脈のために。

一般に、zsh単語の分割は基本的には行われないため、$*オプションが何らかの方法で有効になっていても(例えば、aを介して)分割されないようにすることができます。SH_WORD_SPLITemulate sh

しかし、ほとんどの場合、次のよう"$@"に拡張されます$==*$==*$*SH_WORD_SPLIT空ではない位置引数、whileは"$@"すべての位置引数に展開されます(、に関係なくSH_WORD_SPLITすべてのBourne様シェルに適用されます)。

関連情報