使用变量作为 zsh `j 的分隔符::` 参数扩展标志

使用变量作为 zsh `j 的分隔符::` 参数扩展标志

如何使用变量的值作为 zshj:<delimiter>:参数扩展标志的分隔符字符串的值?

如果我不能这样做,那么在 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在这种情况下变量的值将被替换。请注意,此形式是严格的;字符串参数不进行一般参数扩展。

相关内容