Obtener la función de función en Bash del controlador de trampa (usando la persona que llama)

StackOverflow https://stackoverflow.com/questions/5811002

  •  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

¿Fue útil?

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
scroll top