我想在我的shell脚本上设置一个错误处理,我的脚本调用失败,错误,我应该能够停止执行和流程,不应该继续下一行。
在我的主脚本中,我正在调用以下脚本
sh /usr/oracle/StopServer.sh
如果此脚本因错误而失败,则不应执行此主文件上的下一个脚本..请帮助。
答案 0 :(得分:1)
您可以检查命令执行的返回值,其中一种方法是:
sh /usr/oracle/StopServer.sh
if [ $? -ne 0 ]; then
# exit or take action
fi
它应该做的伎俩
答案 1 :(得分:0)
你走了。
sh /usr/oracle/StopServer.sh && sh my_next_line_that_only_happens_if_Stop_server_exits_without_error
有关详细信息,请参阅&& bash(和大多数语言)中的运算符展示McCarthy evaluation,它基本上只是对布尔条件的惰性求值。这意味着对于an和(&&)然后只有第一部分为真时才会评估和表达式的第二项(因为否则结果会被假设为假。同样如果我们做了A ||只有当A为假时才会执行B(或)B,这意味着它返回的退出代码为0,因此失败。如果你有一个程序要执行,如果程序正常退出而另一个程序要执行如果它以失败状态退出(我将调用它们正常并失败),那么你可以像这样执行它们:
sh condition.sh && sh normal.sh || sh fail.sh
编辑:
if [ sh condition.sh ]; then
# do whatever
else
#this is what to do if it failed
fi
编辑#2:
如果你想看看会发生什么,试试这个:
if [ ls -badoption ] ; then
echo "passed "
else
echo "failed"
fi
# result follows
# zsh: parse error: condition expected: ls
# failed
它将失败,因为有一个错误的选项并且将运行失败,如果您刚刚放置ls它将回传传递,这是您可以退出或运行脚本的位置,具体取决于您采取的路径。