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
}