.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의 의견입니다..