我知道您可以使用“呼叫者”在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 东西接管了,在这种情况下,您将重返业务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top