(${(@s.\n.)s})
zsh에서 (dot) 과 (slash) 의 차이점은 무엇입니까? (${(@s/\n/)s})
예를 들면 다음과 같습니다.
s=a\\nb\\nc\\nd
a=(${(@s.\n.)s})
b=(${(@s/\n/)s})
답변1
차이 없음. 어떤 문자를 사용하든 해당 문자는 변수 값을 분할하려는 문자열을 구분합니다.
zsh
예를 들어 매뉴얼에서는 예제에서 구분된 문자열을 사용 .
하고 섹션 제목에서는 다음을 사용합니다 :
.
s:string:
구분 기호 문자열에서 강제 필드 분할. 두 개 이상의 문자로 구성된 문자열은 순서대로 일치해야 함을 의미합니다. 이는 매개변수에서 두 개 이상의 문자를 처리하는 것과 다릅니다
IFS
. [...][...]; 따라서:
line="one::three" print -l "${(s.:.)line}"
1과 3에 대해 두 줄의 출력을 생성하고 빈 필드를 무시합니다. 이 동작을 무시하려면
(@)
플래그도 제공하십시오(예: )${(@s.:.)line}
.
매뉴얼의 이 섹션 시작 부분에는 구분 기호가 어떤 문자라도 될 수 있다는 사실이 언급되어 있습니다. 또한 다른 유형의 대괄호 쌍을 일치시킬 뿐만 아니라 [
and 를 함께 사용할 수도 있다고 언급되어 있습니다(강조).]
다음 플래그( 제외
p
) 뒤에는 표시된 대로 하나 이상의 인수가 옵니다. 어떤 역할이든, 또는 일치하는 쌍(...)
,{...}
,[...]
또는<...>
은 콜론 대신 구분 기호로 사용할 수 있지만 플래그가 여러 인수를 사용하는 경우 각 인수를 일치하는 구분 기호 쌍으로 묶어야 합니다.