![zsh `j에 대한 구분 기호로 변수를 사용합니다.:` 매개변수 확장 플래그](https://linux55.com/image/169037/zsh%20%60j%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EB%A1%9C%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%A9%EB%8B%88%EB%8B%A4.%3A%60%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%ED%99%95%EC%9E%A5%20%ED%94%8C%EB%9E%98%EA%B7%B8.png)
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
이 옵션을 사용하면 문자열 매개변수 는 변수 값이 대체되는 형식을 취할 수 있습니다. . 이 형식은 엄격합니다. 문자열 매개변수는 일반적인 매개변수 확장을 거치지 않습니다.