Obtener la función de función en Bash del controlador de trampa (usando la persona que llama)
-
25-10-2019 - |
Pregunta
Sé que puedes usar 'Llamador' para obtener un retroceso de llamadas de funciones en Bash:
#! /bin/bash
Backtrace () {
echo "Backtrace is:"
i=0
while caller $i
do
i=$((i+1))
done
}
myFunc () {
Backtrace
}
myFunc
Huellas dactilares:
Backtrace is:
11 myFunc ./test.sh
13 main ./test.sh
Mi pregunta es, digamos que tengo un script que usa 'set -e' para terminar en cualquier falla sin control. ¿Es posible obtener un número de línea de dónde falló el script (y sus personas que llaman)?
He intentado hacer ingenuamente: Trap 'Backtrace' Salida, pero eso me da '1 Main ./test.sh' en lugar del número de línea del comando de falla
Solución
No estoy seguro de si funcionará, pero intente agregar ERR
a tu lista de trap
'D señales. Tal vez su código sea invocado antes del set -e
Las cosas se hacen cargo, en cuyo caso volverás al negocio.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow