zsh에서 (${(@s.\n.)s})와 (${(@s/\n/)s})의 차이점은 무엇입니까?

zsh에서 (${(@s.\n.)s})와 (${(@s/\n/)s})의 차이점은 무엇입니까?

(${(@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) 뒤에는 표시된 대로 하나 이상의 인수가 옵니다. 어떤 역할이든, 또는 일치하는 쌍 (...), {...}, [...]또는 <...>은 콜론 대신 구분 기호로 사용할 수 있지만 플래그가 여러 인수를 사용하는 경우 각 인수를 일치하는 구분 기호 쌍으로 묶어야 합니다.

관련 정보