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/sh
y probablemente no necesite bashism para analizarlo, solo use, por ejemplo, globbing quecase
proporcionaPuede leer el valor del indicador a través de la variable SHELLOPTS:
Verá que, después de configurar
set -e
, aparece el valorerrexit
en$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
errexit
variable está configurada o no en el entorno de llamada, y puede configurarla como desee.fuente
myfunction
llamadas amyfunction || true
para suprimir el efecto de -e para las llamadas y no tendría que hacerloset +e
dentro de la función en primer lugar.