Como posso saber se a opção set -e está ativada ou não?

7

Eu estou escrevendo uma função de shell que será chamada de muitos lugares diferentes e eu quero ignorar todos os erros que ocorrem dentro da função desabilitando a opção (possivelmente ativada) set -e shell, executando set +e .

O problema é que eu não sei se essa opção foi configurada ou não, então não sei se é realmente necessário desabilitá-la, e mais importante, se eu precisar configurá-la novamente no final.

Então, como sei se está definido ou não? Existe alguma maneira de ignorar os erros de todos os comandos dentro de uma função de shell ignorando a opção -e shell se estiver definida?

    
por Carlos Campderrós 10.09.2012 / 16:17

2 respostas

15

Observe o valor de $ -, se ele contiver um 'e', a opção '-e' está configurada. Esta variável contém uma lista de todas as opções definidas. Isso é descrito na página man bash.

    
por 10.09.2012 / 16:25
1

Eu gosto das duas respostas. A sugestão do Ansgar funciona bem com o bash, o do Trevor é bom se o grep estiver no PATH. Se você quer ser independente de shell (bash / sh) e PATH você pode usar

[ "${-#*e}" != "$-" ]

    
por 07.09.2018 / 07:47