2014-03-25 129 views
0

我是shelll腳本的新手,我的問題可能是非常基本的。中止執行shell腳本錯誤

我有一個腳本(.sh文件)正在調用幾個scipt文件。現在假設,我在執行腳本1時收到錯誤消息,我想中止腳本並完全終止腳本流。它不應該繼續下一步。

請問你能告訴我怎麼做到這一點。

編輯

我SCRIPTA正在調用腳本B,在內部進行調用其他一些scriptC。

如果StopServer1.py腳本(腳本B的一部分)執行失敗,流程應該終止於此處,並且不應該到達StopServer2和StopServer3,並且控制轉到腳本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 
+0

你的意思是手動或以編程方式中止嗎? – fedorqui

+0

你是如何得到錯誤信息的?通過退出狀態碼或通過終端輸出? – Jasper

+0

我想以編程方式中止此操作。 – kumarb

回答

4

您可以使用:

set -e 

用於中止對錯誤的腳本。

主要腳本片段:

#!/bin/bash  
set -e 

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

你好Anubhva - 感謝您的快速回復。我懷疑這裏。我的腳本正在調用腳本B,它在內部調用其他腳本。 如果StopServer1.py腳本的執行失敗,流程應該自行終止,並且不應該到達StopServer2和StopServer3。請讓我知道如果設置-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 – kumarb

+0

我剛測試過這個選項,它的工作有些延伸。我看到我的腳本正在中止..我可以在中止腳本之前回顯或打印一些消息..這僅僅是爲了讓支持分析師瞭解哪裏出了問題。 – kumarb

+1

@kumarb不要在評論中張貼代碼,這是不可能正確閱讀。相反,更新你的問題或問一個新的問題,如果這是另一個問題。 – fedorqui

0

可以使用運營商&&這樣<execute_script1> && <execute_script2>

它執行script1,只有一切正常,它才執行script2。如果發生錯誤,腳本2將不會運行。

+0

謝謝,但這不會解決我的問題..!感謝您的快速回復。 – kumarb