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