使用變數作為 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在這種情況下變數的值將被替換。請注意,此形式是嚴格的;字串參數不進行一般參數擴展。

相關內容