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 p
Parametererweiterungsflag:
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,
$VAR
in der der Wert der Variablen ersetzt wird. Beachten Sie, dass diese Form streng ist; das Zeichenfolgenargument unterliegt keiner allgemeinen Parametererweiterung.