Tengo un script de shell que contiene trap, pero trap no parece funcionar como se esperaba. A continuación se muestra el código y la versión de bash.
GNU bash, versión 4.2.46(2) (x86_64-redhat-linux-gnu)
set -e
function exit_message(){
echo -e "\e[31m\nError occurred "
}
function login(){
false
}
trap exit_message ERR
login
La trampa anterior funciona si lo hago
function login(){
trap exit_message ERR
false
}
Respuesta1
Todos los [...] aspectos del entorno de ejecución del shell son idénticos entre una función y su llamador con estas excepciones: las trampas DEBUG y RETURN no se heredan a menos que a la función se le haya dado el
trace
atributo usando eldeclare
incorporado o la-o functrace
opción se haya habilitado con elset
incorporado (en cuyo caso todas las funciones heredan las trampas DEBUG y RETURN), y la trampa ERR no se hereda a menos que-o errtrace
se haya habilitado la opción Shell.