Como verificar as opções do shell?

Como verificar as opções do shell?

Quero verificar quais opções estão habilitadas para meu shell atual. Por exemplo, quero saber se fui invocado com -xou -ecom qualquer outra opção.

Eu sourceuso um script de shell com linha shebang #!/bin/bash -xe depois tento desligar 'x' com um set +xno final do script. Agora quero verificar se minha set +xlinha foi bem-sucedida.

Tentativa de solução

Eu descobri printenvalgumas setmaneiras de inspecionar algumas informações sobre o shell atual, mas nenhum deles parece conter uma variável que armazene x eou algo semelhante.

Responder1

Está na $-variável.

Veja odocumentação para o setcomando- role para baixo até o final e você verá "O conjunto atual de opções pode ser encontrado em $-."

Uma demonstração rápida

$ bash
$ echo $-
himBH
$ set -f; set +H
$ echo $-
fhimB
$ [[ $- == *i* ]] && echo This is an interactive shell
This is an interactive shell

Responder2

Há também $BASHOPTSe $SHELLOPTS.

fonte

informação relacionada