Você pode usar a local_options
opção para restaurar automaticamente opções quando a função sai. Isso seria apropriado apenas se a sua função não fizer nenhuma outra alteração nas outras que você pretenda persistir após a conclusão da função.
Assim, você poderia escrever sua função assim:
do_something() {
setopt local_options extended_glob
⋮
}
Se você tiver alguma outra opção que deseje persistir após a função ter retornado, poderá usar a matriz associativa options
(da zsh/parameter
module ) para verificar e manipular facilmente opções individuais:
do_something() {
local eg=$options[extended_glob]
setopt extended_glob
⋮
options[extended_glob]=$eg
}
Se este módulo não estiver disponível em sua instalação, você poderá usar o -o
teste :
do_something() {
local eg=no
[[ -o extended_glob ]] && eg=
setopt extended_glob
⋮
setopt ${eg}extended_glob
}