zsh에서 '$==*' 관용구는 무엇을 의미합니까?

zsh에서 '$==*' 관용구는 무엇을 의미합니까?

$==*나는 내가 사용한 여러 zsh 솔루션에서 이 관용구를 발견했습니다. 와 동등한 것 같습니다 $argv. 하지만 어떻게 설명되는지 모르겠습니다. 설명해주실 수 있나요?

답변1

이것은 Zsh 중 하나입니다매개변수 확장이는 다음에 적용됩니다 $*.

${=spec}
은 SH_WORD_SPLIT 규칙을 사용하여 spec 평가 프로세스 중에 단어 분할을 수행하지만 매개변수가 큰따옴표로 표시되는지 여부와 관계가 없습니다."="가 두 배가 되면 닫힙니다.이렇게 하면 IFS를 구분 기호로 사용하여 교체 전에 매개변수 확장이 별도의 단어로 분할됩니다. 대부분의 다른 쉘에서는 이것이 기본적으로 수행됩니다.

Gilles의 일반적으로 철저한 답변을 참조하십시오분사란 무엇입니까? 쉘 프로그래밍에서 왜 중요한가요?맥락을 위해.

일반적으로 zsh단어 분할은 기본적으로 수행되지 않으므로 $*옵션이 어떤 방식(예: a를 통해)으로 활성화되어 있어도 분할되지 않도록 하기 위한 것일 수 있습니다.SH_WORD_SPLITemulate sh

그러나 대부분의 경우 다음 "$@"과 같이 확장되는 $==*.$==*$*SH_WORD_SPLIT비어 있지 않음위치 인수, while은 "$@"모든 위치 인수로 확장됩니다( , 에 관계없이 SH_WORD_SPLIT모든 Bourne 유사 쉘에 적용됨).

관련 정보