Получите функцию Backtrace в Bash от Grap Gansler (с помощью Caller)
-
25-10-2019 - |
Вопрос
Я знаю, что вы можете использовать «вызывающего абонента», чтобы получить обратную связь функциональных вызовов в 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' выход, но это дает мне «1 Main ./test.sh '», а не номер строки команды неудачи
Решение
Я не уверен, сработает ли это, но попробуйте добавить ERR
В ваш список trap
'D Сигналы. Может быть, ваш код будет вызван до set -e
Материал вступает во владение, и в этом случае вы вернетесь в бизнес.
Не связан с StackOverflow