在Bash脚本中设置-e:发现失败位置?

时间:2011-11-20 14:11:04

标签: linux bash error-handling

众所周知,我们应该使用set -e制作Bash脚本more robust。但是,启用此功能后,如果脚本 失败,是否有任何方法可以让Bash报告脚本的哪一行失败?目前,我不得不用大量echo命令重新运行脚本。

3 个答案:

答案 0 :(得分:5)

我知道使用行号进行调试的最佳选项是自定义由+打印的“set -x”前缀以包含$LINENO

e.g。在脚本的顶部:

PS4='($LINENO)+ '
set -x

(不完全是你要求的,但它很方便!)

答案 1 :(得分:2)

您可以使用bash -x重新运行(或在您的脚本中放置set -x以激活调试,set +x稍后停用它)

答案 2 :(得分:0)

不确定行号,但如果将-e(或-u)与-v结合使用,则会在屏幕上显示最后一行时出现错误行。