Получить обратную трассировку функции в bash из обработчика прерываний (с использованием вызывающего)

Я знаю, что вы можете использовать 'caller', чтобы получить трассировку вызовов функций в bash:

#! /bin/bash
Backtrace () {
   echo "Backtrace is:"
   i=0
   while caller $i
   do
      i=$((i+1))
   done
}
myFunc () {
   Backtrace
}
myFunc

Печать:

Backtrace is:
11 myFunc ./test.sh
13 main ./test.sh

Мой вопрос, скажем, у меня есть сценарий, который использует 'set -e 'для завершения при любом непроверенном сбое. Можно ли получить номер строки, в которой произошел сбой скрипта (и его вызывающих)

Я наивно пытался сделать: trap 'Backtrace' EXIT, но это дает мне '1 main ./test.sh', а не номер строки команды с ошибкой

7
задан Jolta 15 February 2017 в 18:07
поделиться