shell腳本中間命令執行失敗
㈠ 如何讓shell腳本某一步出錯輸出錯誤提示並終止執行腳本
if [ 出錯 ]
then echo "錯誤"; exit 1;
fi
㈡ 如何在shell腳本中,判斷一個基本命令執行是否成功
1.連接到相應的Linux主機,進入Linux命令行狀態,等待shell命令的輸入。
㈢ shell腳本執行kill命令後自動停止的問題
背景:每周重啟jenkins
所以寫了一個腳本,命名為 auto_restart_jenkins.sh
其中裡麵包含了一個kill命令:ps -ef | grep jenkins | grep -v grep | awk '{print "kill -9 "$2}' | sh
但是每次執行到這一步的時候整個shell腳本就被kill掉了。
原因:因為shell腳本名中包含了jenkins,所以在執行kill命令的時候,也就把shell腳本kill掉了。
最後,改一下shell腳本名就好了,不要包含jenkins
或者在shell腳本中添加參數 export BUILD_ID=dontKillMe
㈣ Windows下Shell腳本運行錯誤展示錯誤信息並停止向下執行
shell腳本運行完畢之後會直接關閉窗口,不便於開發者查看運行結果,這點可以通過 sleep 來實現暫停
新建腳本 demoshell
在命令窗口執行 demoshell.sh xxxxx ,會啟動 shell 窗口 ,列印 params1= xxxxx 之後就會關閉窗口
想要不關閉窗口可以在腳本的最後添加 sleep 來實現。
例如
再次執行 demoshell.sh xxxxx ,執行完畢之後,窗口不會直接關閉,可以查看運行結果
shell腳本還有一個不好的地方就是中間的一個命令運行失敗之後還會繼續向下執行,這是一個很危險的行為,並且向下執行的時候會沖掉失敗信息,無法根據錯誤提示來修改腳本。
接下來執行一個不存在的任務,讓shell腳本運行失敗
執行失敗之後由於 sleep 100 ,可以看到錯誤提示,如果沒有 sleep 100 存在,執行失敗之後也是立馬關閉了窗口,看不到錯誤信息;而命令執行成功之後需要關閉窗口的,那能不能想辦法做到兩者兼顧呢?
答案是肯定的,原理就是判斷命令執行狀態,只有在命令執行失敗的時候,觸發sleep行為,阻塞命令向下運行
去掉 sleep 100 ,運行腳本,捕獲到失敗信息,顯示錯誤信息,並停止向下執行
注釋掉 ./gradlew :app:emptyTask -x lint ;
再次運行腳本,運行成功,直接就關閉了窗口