Se uma função shell precisar de uma configuração específica de -e / + e para funcionar, é possível definir essa configuração localmente e depois restaurá-la para a configuração anterior antes de sair da função?
myfunction()
{
# Query here if -e is set and remember in a variable?
# Or push the settings to then pop at the end of the function?
set +e
dosomething
doanotherthing
# Restore -e/+e as appropriate, don't just do unconditional set -e
}
bash
shell-script
usta
fonte
fonte
$-
também trabalha em/bin/sh
e você provavelmente não precisa bashisms para analisá-lo, basta usar por exemplo englobamento quecase
forneceVocê pode ler o valor da flag através da variável SHELLOPTS:
Você vê que, após a configuração
set -e
, o valorerrexit
em$SHELLOPTS
aparece. Você pode conferir a partir daí.No entanto, você pode contornar isso (se desejar!) Lembrando o seguinte ponto: de acordo com o Manual :
Portanto, se você executar sua função em um subshell, como
você não precisa se preocupar se a
errexit
variável está configurada ou não no ambiente de chamada e pode configurá-la como desejar.fonte
myfunction
chamadas paramyfunction || true
suprimir o efeito de -e para as chamadas e não teria que fazerset +e
dentro da função em primeiro lugar.