$VAR
문자열이 포함된 경우 문자열을 마침표로 분할하여 다음과 같은 배열을 생성할 수 있다는 것을 알고 있습니다 .
% VAR=$ZSH_VERSION
% parts=(${(s:.:)VAR})
% printf '%s\n' $parts
5
0
7
예를 들어, at 문자의 값을 ASCII 코드 0 에서 분리하려면 in 플래그 사이에 :
무엇을 넣어야 합니까?(s::)
$VAR
나는 내가 생각할 수 있는 모든 것을 시도했다. 예를 들어
% VAR=$'5\0000\0007'
% parts=(${(s:\000:)VAR})
% printf '%s\n' $parts
5^@0^@7
이들 중 어느 것도 작동하지 않습니다.
답변1
p
다른 플래그를 만들려면 플래그를 사용해야 합니다 .확장 플래그(아래 p
)은 이스케이프 시퀀스를 식별합니다.
$ printf '%s\n' ${(ps:\0:)VAR}
5
0
7
또는 다음과 같은 약어를 사용하십시오.
printf '%s\n' ${(0)VAR}
빈 요소를 유지합니다.
printf '%s\n' "${(0@)VAR}"
그러나 출력에 후행 요소를 추가하고 항상 마지막 빈 요소를 가져오기 find ... -print0
때문에 from의 출력에는 사용할 수 없습니다 .\0