¿Cómo puedo usar el valor de una variable como valor de la cadena delimitadora para el j:<delimiter>:
indicador de expansión del parámetro zsh?
Si no puedo hacer eso, ¿cuál es la forma más eficiente y concisa de utilizar una variable para delimitar valores en zsh?
array=(a b)
delimiter=,
printf -- "%s" ${(j:,:)array} # good: outputs: a,b
printf -- "%s" ${(j:$delimiter:)array} # bad: outputs: a$delimiterb
Respuesta1
Utiliza el p
indicador de expansión de parámetros:
printf %s ${(pj:$delimiter:)array}
Citando el documento (el énfasis es mío):
p
Reconozca las mismas secuencias de escape que la función print incorporada en los argumentos de cadena de cualquiera de los indicadores descritos a continuación que siguen a este argumento.
Alternativamente,con esta opción los argumentos de cadena pueden estar en la forma
$VAR
en cuyo caso se sustituye el valor de la variable. Tenga en cuenta que este formulario es estricto; el argumento de cadena no sufre una expansión de parámetros general.