[[ ... ]]의 ZSH 확장 변수는 글로빙을 수행하지 않습니다.

[[ ... ]]의 ZSH 확장 변수는 글로빙을 수행하지 않습니다.

.zshrc에 extend_glob을 설정했습니다.

이는 예상대로 작동합니다.

[[ "value" = [a-z]* ]] && echo "globbed"

"globbed"를 인쇄합니다.

하지만 다음은 그렇지 않습니다.

foo=[a-z]*
[[ "value" = $foo ]] && echo "globbed"

아무것도 인쇄하지 않습니다.
왜 그런 겁니까? 이 작업을 수행하려면 .zshrc에 무엇을 설정해야 합니까?

답변1

zsh매뉴얼 에서 (강조):

${~spec}
GLOB_SUBST평가 옵션을 켜십시오 spec. 두 배로 늘어나면 ~끄십시오. 이 옵션이 설정되면,확장으로 생성된 문자열은 패턴으로 해석됩니다.파일 이름 확장, 파일 이름 생성 등 가능한 모든 곳=조건에서 and 연산자의 오른쪽 과 같은 패턴 일치 컨텍스트!=.

이는 다음을 사용해야 함을 의미합니다.

foo='[a-z]*'
[[ "value" = ${~foo} ]] && echo 'matched'

...변수의 문자열을 foo패턴으로 사용하도록 명시적으로 허용합니다.

위의 코드는 matched문자열이 value변수에 저장된 패턴과 일치하는지 여부를 인쇄합니다 foo. 파일 이름 글로빙은 여기에 관련되지 않습니다. 당신은 또한 볼 수 있습니다다음은 Stéphane의 의견입니다..

관련 정보