如何获得最后的bash错误

我正在做一个可怕的项目。 它在后台使用了很多凌乱的shell脚本。 脚本可能包含一些其他脚本。 许多错误输出被redirect到/ dev / null。 当脚本没有成功执行时,我可以使用echo $? 看到错误代码,但我不能知道什么命令返回这个错误代码。

这些脚本在那里。 我不想审查所有的代码,并添加额外的代码,以温和的方式处理错误。 现在我有两个问题:

  1. 是否有可能打印最后的bash命令的参数,这是不成功执行?
  2. 如何与这种混乱的shell脚本代码?

尝试

 bash -x /my/script 

在脚本执行时打印每一行。

不能像这样运行脚本? 您也可以将它添加到文件的第一行的shebang。

 #!/usr/bin/bash -x 

正如迈克尔说的,也经常用于错误检查bash脚本$ LINENO – 每次引用此参数时,shell在脚本中用一个十进制数字代替当前顺序行号(从1开始)。

所以经过一定的命令我会做:

  if [ $? = 0 ]; then echo "Command "Foo" finished successfully." else echo "Error occurred on line $LINENO in command "Foo" with exit status $?" fi 

像这样的东西。 希望这可以帮助。