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.
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?
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}" != "$-" ]
Tags command-line bash linux