Я знаю, что вы можете использовать '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', а не номер строки команды с ошибкой