Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
出现错误时中止执行shell脚本_Shell_Abort - Fatal编程技术网

出现错误时中止执行shell脚本

出现错误时中止执行shell脚本,shell,abort,Shell,Abort,我不熟悉Shell脚本,这里的问题可能非常基本 我有一个脚本(.sh文件),它正在调用两个scipt文件。现在假设,我在执行脚本1时收到错误消息,我想中止脚本并完全终止脚本流。它不应该继续下一步 你能告诉我怎样才能做到这一点吗 编辑 我的脚本A正在调用脚本B,脚本B在内部调用其他脚本C 如果StopServer1.py脚本(脚本B的一部分)的执行失败,则流应在此处自行终止,不应到达StopServer2和StopServer3,控制权转到脚本A。脚本A也应终止 请告诉我set-e是否有帮助 cd

我不熟悉Shell脚本,这里的问题可能非常基本

我有一个脚本(.sh文件),它正在调用两个scipt文件。现在假设,我在执行脚本1时收到错误消息,我想中止脚本并完全终止脚本流。它不应该继续下一步

你能告诉我怎样才能做到这一点吗

编辑

我的脚本A正在调用脚本B,脚本B在内部调用其他脚本C

如果StopServer1.py脚本(脚本B的一部分)的执行失败,则流应在此处自行终止,不应到达StopServer2和StopServer3,控制权转到脚本A。脚本A也应终止

请告诉我
set-e
是否有帮助

cd /usr/oracle/WSAutomate/
java weblogic.WLST /usr/oracle/StopServer1.py >> $logFileName
java weblogic.WLST /usr/oracle/StopServer2.py >> $logFileName
java weblogic.WLST /usr/oracle/StopServer3.py >> $logFileName
您可以使用:

set -e
用于在出现错误时中止脚本

主脚本片段:

#!/bin/bash    
set -e

# Any failure in these script calls will make main script to exit immediately
./script1
./script2
./script3
您可以使用:

set -e
用于在出现错误时中止脚本

主脚本片段:

#!/bin/bash    
set -e

# Any failure in these script calls will make main script to exit immediately
./script1
./script2
./script3

您可以通过这种方式使用运算符
&&


它执行script1,只有在一切正常的情况下,才会执行script2。如果出现错误,脚本2将不会运行。

您可以通过这种方式使用操作符
&&


它执行script1,只有在一切正常的情况下,才会执行script2。如果出现错误,script2将不会运行。

您是指手动中止还是以编程方式中止?您是如何获得错误消息的?通过退出状态代码还是通过终端输出?我想以编程方式中止此操作。您是指手动中止还是以编程方式中止?如何获取错误消息?通过退出状态代码还是通过终端输出?我想以编程方式中止此操作。你好,Anubhva-感谢您的快速响应。我对此表示怀疑。我的脚本正在调用脚本B,它在内部调用其他脚本。如果StopServer1.py脚本的执行失败,则流应在此处自行终止,并且不应到达StopServer2和StopServer3。请让我知道set-e是否有帮助。cd/usr/oracle/wsautomation/java weblogic.WLST/usr/oracle/StopServer1.py>>$logFileName java weblogic.WLST/usr/oracle/StopServer2.py>>$logFileName java weblogic.WLST/usr/oracle/StopServer3.py>>$logFileName我刚刚测试了这个选项,并测试了它的工作情况。我看到我的脚本被中止了。。我可以在中止脚本之前回显或打印一些消息吗。。这只是为了让支持分析员了解出了什么问题。@kumarb不要在注释中发布代码,不可能正确阅读。相反,如果是另一个问题,请更新您的问题或询问新问题。@kumarb:您要查找的内容可以使用
trap
命令完成。您好,Anubhva-感谢您的快速回复。我对此表示怀疑。我的脚本正在调用脚本B,它在内部调用其他脚本。如果StopServer1.py脚本的执行失败,则流应在此处自行终止,并且不应到达StopServer2和StopServer3。请让我知道set-e是否有帮助。cd/usr/oracle/wsautomation/java weblogic.WLST/usr/oracle/StopServer1.py>>$logFileName java weblogic.WLST/usr/oracle/StopServer2.py>>$logFileName java weblogic.WLST/usr/oracle/StopServer3.py>>$logFileName我刚刚测试了这个选项,并测试了它的工作情况。我看到我的脚本被中止了。。我可以在中止脚本之前回显或打印一些消息吗。。这只是为了让支持分析员了解出了什么问题。@kumarb不要在注释中发布代码,不可能正确阅读。相反,如果是另一个问题,请更新您的问题或询问新问题。@kumarb:您要查找的内容可以使用
trap
命令完成。谢谢,但这并不能解决我的问题!感谢您的快速回复。谢谢,但这并不能解决我的问题!感谢您的快速回复。