从陷阱处理程序(使用呼叫者)中获取Back Trace的功能backtrace
-
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'”在任何不受控制的失败上终止。是否可以获取脚本失败的线路数(及其呼叫者)
我尝试过天真地做:陷阱'Backtrace'出口,但这给了我'1 main ./test.sh'而不是失败命令的行号
解决方案
我不确定它是否会起作用,但请尝试添加 ERR
到您的清单 trap
'd信号。也许您的代码会在 set -e
东西接管了,在这种情况下,您将重返业务。
不隶属于 StackOverflow