extended_glob
나는 옵션을 활성화 하고 싶은 zsh 쉘 함수(스크립트가 아닌)를 작성하고 있습니다 . 그러나 함수는 호출자의 컨텍스트에서 실행되므로 해당 설정을 훼손하고 싶지 않습니다.
내가 하고 싶은 일은 extended_glob
필요한 만큼 조건부로 활성화한 다음 사용자 옵션으로 복원하는 것입니다. zsh에서 옵션이 활성화되어 있는지 확인하는 방법이 있습니까?
답변1
당신은 사용할 수 있습니다local_options
옵션기능이 종료되면 자동으로 옵션을 복원합니다. 이는 귀하의 기능이 아무 것도 만들지 않는 경우에만 적합합니다.다른기능이 완료된 후에도 유지하려는 옵션 변경 사항입니다.
따라서 다음과 같이 함수를 작성할 수 있습니다.
do_something() {
setopt local_options extended_glob
⋮
}
함수가 반환된 후에도 유지하려는 다른 옵션이 있는 경우 options
연관 배열을 사용할 수 있습니다(zsh/parameter
기준 치수) 개별 옵션을 쉽게 확인하고 조작하려면 다음을 수행하세요.
do_something() {
local eg=$options[extended_glob]
setopt extended_glob
⋮
options[extended_glob]=$eg
}
설치 환경에서 이 모듈을 사용할 수 없는 경우 다음을 사용할 수 있습니다.-o
시험:
do_something() {
local eg=no
[[ -o extended_glob ]] && eg=
setopt extended_glob
⋮
setopt ${eg}extended_glob
}