Verwenden der Variable als Trennzeichen für zsh `j::` Parametererweiterungsflag

Verwenden der Variable als Trennzeichen für zsh `j::` Parametererweiterungsflag

Wie kann ich den Wert einer Variablen als Wert für die Trennzeichenzeichenfolge für das Zsh- j:<delimiter>:Parametererweiterungsflag verwenden?

Wenn das nicht möglich ist, was ist die effizienteste und prägnanteste Möglichkeit, in zsh eine Variable zum Abgrenzen von Werten zu verwenden?

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

Antwort1

Sie verwenden das pParametererweiterungsflag:

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

Zitat aus dem Dokument (Hervorhebung von mir):

p

Erkennen Sie dieselben Escape-Sequenzen wie den in Zeichenfolgenargumenten integrierten Druck für alle unten beschriebenen Flags, die diesem Argument folgen.

Alternative,Mit dieser Option können String-Argumente in der Form vorliegen, $VARin der der Wert der Variablen ersetzt wird. Beachten Sie, dass diese Form streng ist; das Zeichenfolgenargument unterliegt keiner allgemeinen Parametererweiterung.

verwandte Informationen