zsh `j에 대한 구분 기호로 변수를 사용합니다.:` 매개변수 확장 플래그

zsh `j에 대한 구분 기호로 변수를 사용합니다.:` 매개변수 확장 플래그

j:<delimiter>:zsh 매개변수 확장 플래그의 구분자 문자열 값 으로 변수 값을 사용하는 방법은 무엇입니까 ?

그렇게 할 수 없다면 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이 옵션을 사용하면 문자열 매개변수 는 변수 값이 대체되는 형식을 취할 수 있습니다. . 이 형식은 엄격합니다. 문자열 매개변수는 일반적인 매개변수 확장을 거치지 않습니다.

관련 정보