printf %s\\n "$-"
Irá listar as opções de letra única em uma única sequência.
Esse parâmetro também pode ser usado como:
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
Para primeiro desabilitar a -fexpansão nome do arquivo de shell e salvar simultaneamente um valor para $-- se houver - em $1. Em seguida, nenhum globs ocorre e a +fexpansão do último nome de arquivo é ativada novamente e, possivelmente, também desativada.
Por exemplo, se a -fexpansão ilename já estava desativada quando o valor de $-foi salvo pela primeira vez, seu valor salvo seria (pelo menos) :
f
E assim, quando seté executado novamente, funciona:
set +f -f
O que apenas o coloca de volta onde você começou.
set +o
Irá listar todas setas opções de shell da tabela (consulte a resposta de Jason para asshopt opções capazes - isso é uma palavra? -) em um formato que seja seguro para a reinserção do shell. Dessa forma, você também pode fazer:
state=$(set +o)
set -some -crazy -options
eval "$state"
Para salvar, alterar e restaurar o estado das opções do shell, respectivamente.
Para manipular shoptíons e setopções de tabela de uma só vez:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
Você também pode chamar set sem argumentos para adicionar uma lista de todas as variáveis definidas no momento do shell - também citadas para reinserção no shell. E você pode - no bash - adicionar adicionalmente o comando typeset -fppara incluir também todas as funções shell declaradas no momento. Você pode agrupar tudo junto e evalquando estiver pronto. Você pode até ligar aliassem argumentos para mais do mesmo. Isso ... pode cobrir, no entanto. Eu acho que existe "$@"- o que você teria que colocar em uma bashmatriz primeiro, suponho, antes de fazer set.
Não, há também trap. Este é um pouco engraçado. Geralmente:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
... apenas imprimirá este é o meu subshell porque o subshell é um novo processo e obtém seu próprio conjunto de traps - e, portanto, não herda nenhum traps, exceto aqueles que seu pai ignorou explicitamente - (como trap '' INT) .
Contudo:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapse comporta especialmente quando é o primeiro e único comando executado em um subshell de substituição de comando, na medida em que reproduz uma lista do shell pai atualmente definido trapsem um formato que é citado para reentrada segura no shell. E assim você pode fazer o save_traps, em seguida, set sem argumentos - e todo o resto já foi mencionado - a praticamente obter um bloqueio em todo o estado shell. Você pode adicionar export -pe readonly -prestaurar explicitamente os atributos originais do shell var.
Enfim, isso é o suficiente.
set +oeshopt? (como ashoptcapacidade de ser uma palavra,settableé usada na página de homem, assimshoptablefunciona para mim)