shell脚本执行成功但输出有错误,如何确定错误并退出主脚本?

时间:2015-12-15 08:14:37

标签: shell error-handling

我有一个主脚本。在其中我调用了其他三个shell脚本,A,B和C.所有都成功了。退出代码都等于零。但是,当我查看第一个脚本的输出文件A时,它包含一条错误消息。现在我想退出主脚本,而不是在输出错误的脚本之后继续运行其他脚本。谁可以帮我这个事?谢谢!

3 个答案:

答案 0 :(得分:0)

即使第一个bash脚本中的某个命令导致错误,整个脚本也可能以退出代码0完成。

您可以使用Experimental\Testing prototype and incomplete bug pattern\Unknown bug pattern变量检查脚本中任何单个命令的退出代码。此变量存储上一个命令的退出代码。这将允许您检查脚本中的错误。

答案 1 :(得分:0)

最简单的方法是将|| exit 1附加到抛出错误的语句中。如果命令的退出代码是1(即错误),那将导致脚本退出 假设您有一个命令sqlscript,如果sqlscript以非零退出代码退出,您希望整个脚本退出

sqlscript || exit 1

作为琐事的一点,不需要1中的exit 1。普通exit命令也将以最后执行的命令的退出状态退出 如果false命令失败,那将是sqlscript(代码= 1)。如果sqlscript命令成功,则退出代码为sqlscript的退出代码。在这种情况下,||不会触发,并且不会执行exit命令。

答案 2 :(得分:0)

  

我有一个主脚本。在里面我调用其他三个shell脚本,A,B   和C.一切都很成功。退出代码都等于零。然而,   当我查看第一个脚本的输出文件是A时,它   包含错误消息。现在我想退出主脚本而不是   在具有输出的脚本之后继续运行其他脚本   错误。

由于脚本A不返回错误退出代码,因此您必须检查其输出。 grep这很容易,前提是您有一个清楚标识错误消息的搜索字符串,例如: G:

# this echo command simulates script A - it outputs "error" and exits with 0:
echo "contains an error message" >StoreKey_All.csv  # assumed this output file
grep error StoreKey_All.csv && exit 1               # exit if output has error
# continue with scripts B and C
echo B