我正在使用通用程序来捕获和描述错误或异常情况,而不是通常的“2> ...”错误构造。
这个想法将是一个像这个简化版本的程序:
function debug(){
echo "Fatal Error: $PWD:$BASH_SOURCE:$LINENO $*"
....
exit 1
}
然后,在此示例中使用:
[ -z "$PARAMETER" ] && debug The parameter was not provided
问题是:
BASH_SOURCE
是正在运行的来源。如果过程'debug'是全局的,那么想法是显示调用源。LINENO
是执行扩展的行,没有调用地址。注意:BASH_SOURCE [0]和BASH_SOURCE [1]在程序来源时提供“一些帮助”。
这将用于在集中的错误消息过程中通知“用户”错误。这可能包括syslog中的帖子和其他日志文件。但是,有些消息可能看起来很相似,并且知道在源代码中检测到错误的位置,可以帮助开发人员。
是否有任何方法可以在bash上获得调用堆栈?
答案 0 :(得分:2)
您可以使用bash内置命令“caller”。 链接 - > http://wiki.bash-hackers.org/commands/builtin/caller
答案 1 :(得分:0)
如果在脚本中添加以下行,系统将显示脚本的执行流程:
set -x