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