ZSHのこの機能は(私の考えでは)答えに使用されました複数の文字を区切り文字として使用して文字列を分割するためのZSH構文
または、$ = varを使用してIFS分割を使用することもできます。
IFS=.- parts=( $=file )
ZSHドキュメントでこの設定の名前を指摘できますか?
答え1
次の意味IFS
:可変インデックス「→」IFS
「、」IFS
、使用「、」IFS
、使用「、」IFS
、使用」。
最初の「使用法」リンクは文書を指し$=NAME
、zsh構文に慣れていない場合は見つけるのが難しいです。$
スタートパラメータ拡張。パラメータ拡張は、を含むさまざまな形式を取ることができます。部分は、プレフィックス/サフィックスの削除、パターン置換、デフォルト値の注入などを実行するために使用されるパラメータ名、またはさまざまなサフィックスの1つを持つパラメータ名です。メタ変数が最初に表示されるとき(文書内)、あまり明確ではない方法で文書化されています。また、パラメータ名のみがある場合、中括弧はオプションです。これは文書に記載されていますが、等に適用されます。${=spec}
spec
spec
${#spec}
spec
${name}
${#spec}
${=spec}
答え2
$=file
配列割り当ての代わりに尋ねる場合は、parts=( ... )
次の記事で説明します。パラメータ拡張セクション(または同等のものman zshexpn
)、スタートバーから開始${#spec}
${=spec} Perform word splitting using the rules for SH_WORD_SPLIT during the evaluation of spec, but regardless of whether the parameter appears in double quotes; if the `=' is doubled, turn it off. This forces parameter expansions to be split into separate words before substitution, using IFS as a delimiter. This is done by default in most other shells.
「裸」の形態$=spec
は次のように説明されています${#spec}
。
If the option POSIX_IDENTIFIERS is not set, and spec is a simple name, then the braces are optional; this is true even for spe‐ cial parameters so e.g. $#- and $#* take the length of the string $- and the array $* respectively. If POSIX_IDENTIFIERS is set, then braces are required for the # to be treated in this fashion.