zsh `jの区切り文字として変数を使用します。: `パラメータ拡張フラグ

zsh `jの区切り文字として変数を使用します。: `パラメータ拡張フラグ

j:<delimiter>:zshパラメータ拡張フラグの区切り文字列値として変数値を使用する方法は?

それができない場合は、zshで変数を使用して値を区切る最も効率的で簡潔な方法は何ですか?

array=(a b)
delimiter=,
printf -- "%s" ${(j:,:)array}          # good: outputs: a,b
printf -- "%s" ${(j:$delimiter:)array} # bad:  outputs: a$delimiterb

ベストアンサー1

pパラメータ拡張フラグを使用します。

printf %s ${(pj:$delimiter:)array}

文書の引用(強調):

p

この引数の後に説明されているすべてのフラグの文字列引数のprintに組み込まれているのと同じエスケープシーケンスを認識します。

または、$VARこのオプションを使用すると、文字列パラメータは変数値が置き換えられる形式を取ることができます。 。この形式は厳密です。文字列パラメータは一般的なパラメータ拡張を受けません。

おすすめ記事