Como posso usar o valor de uma variável como o valor da string delimitadora do j:<delimiter>:
sinalizador de expansão do parâmetro zsh?
Se não posso fazer isso, qual é a maneira mais eficiente e concisa de usar uma variável para delimitar valores em zsh?
array=(a b)
delimiter=,
printf -- "%s" ${(j:,:)array} # good: outputs: a,b
printf -- "%s" ${(j:$delimiter:)array} # bad: outputs: a$delimiterb
Responder1
Você usa o p
sinalizador de expansão de parâmetro:
printf %s ${(pj:$delimiter:)array}
Citando o documento (ênfase minha):
p
Reconheça as mesmas sequências de escape que os argumentos de string incorporados print para qualquer um dos sinalizadores descritos abaixo que seguem este argumento.
Alternativamente,com esta opção os argumentos da string podem estar na forma,
$VAR
caso em que o valor da variável é substituído. Observe que este formulário é rigoroso; o argumento string não sofre expansão de parâmetro geral.