zsh で (${(@s.\n.)s}) と (${(@s/\n/)s}) の違いは何ですか?

zsh で (${(@s.\n.)s}) と (${(@s/\n/)s}) の違いは何ですか?

(${(@s.\n.)s})zshの(dot)と(slash)の違いは何ですか?(${(@s/\n/)s})たとえば、次のようになります。

s=a\\nb\\nc\\nd

a=(${(@s.\n.)s})
b=(${(@s/\n/)s})

ベストアンサー1

違いなし。どの文字を使用しても、その文字は変数値を分割したい文字列を区別します。

zshたとえば、マニュアルでは例で区切られた文字列を使用し、.セクションのタイトルでは次のように使用します:

s:string:

区切り文字列から強制フィールドを分割します。複数の文字で構成される文字列は、順番に一致する必要があることを意味します。これは、パラメータで複数の文字を処理するのとは異なりますIFS。 [...]

[...];したがって:

  line="one::three"
  print -l "${(s.:.)line}"

1と3の2行の出力を生成し、空のフィールドを無視します。この動作を無視するには、(@)フラグも指定します(例:) ${(@s.:.)line}

このマニュアルのこのセクションの冒頭には、区切り文字を任意の文字にすることができるという事実が記載されています。また、他の種類の角括弧のペアを一致させるだけでなく、[andを一緒に使用することもできると言われています(強調)。]

次のフラグ(除くp)の後には、示されているように1つ以上の引数が続きます。 どんな役割でも、または一致するペア、、、またはは(...)コロンの代わりに区切り文字として使用できますが、フラグが複数の引数を使用する場合は、各引数を一致する区切り文字のペアで囲む必要があります{...}[...]<...>

おすすめ記事