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