Si una función de shell necesita una configuración específica de -e / + e para funcionar, ¿es posible establecer esa configuración localmente y luego restaurarla a su configuración anterior antes de salir de la función?
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
fuente
fuente

$-también funciona/bin/shy probablemente no necesite bashism para analizarlo, solo use, por ejemplo, globbing quecaseproporcionaPuede leer el valor del indicador a través de la variable SHELLOPTS:
Verá que, después de configurar
set -e, aparece el valorerrexiten$SHELLOPTS. Puedes consultarlo desde allí.Sin embargo, puede evitar esto (si lo desea) recordando el siguiente punto: de acuerdo con el Manual :
Por lo tanto, si ejecuta su función en una subshell, como
no tiene que preocuparse si la
errexitvariable está configurada o no en el entorno de llamada, y puede configurarla como desee.fuente
myfunctionllamadas amyfunction || truepara suprimir el efecto de -e para las llamadas y no tendría que hacerloset +edentro de la función en primer lugar.