
Quero verificar quais opções estão habilitadas para meu shell atual. Por exemplo, quero saber se fui invocado com -x
ou -e
com qualquer outra opção.
Eu source
uso um script de shell com linha shebang #!/bin/bash -x
e depois tento desligar 'x' com um set +x
no final do script. Agora quero verificar se minha set +x
linha foi bem-sucedida.
Tentativa de solução
Eu descobri printenv
algumas set
maneiras de inspecionar algumas informações sobre o shell atual, mas nenhum deles parece conter uma variável que armazene x
e
ou algo semelhante.
Responder1
Está na $-
variável.
Veja odocumentação para o set
comando- 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 $BASHOPTS
e $SHELLOPTS
.