今天操做的時候遇到一個問題,須要把內容重定向到文件,而後再把文件重命名使用,結果重定向的時候已經拋異常了,下面的天然也會接着出現各類問題。因此,仍是以爲一些關鍵操做要作一些判斷或者捕獲異常,避免出現更嚴重的問題。shell
解決辦法以下:bash
你寫的每個腳本的開始都應該包含set -e。這告訴bash一但有任何一個語句返回非真的值,則退出bash。 使用-e的好處是避免錯誤滾雪球般的變成嚴重錯誤,能儘早的捕獲錯誤。更加可讀的版本:set -o errexit 使用-e把你從檢查錯誤中解放出來。若是你忘記了檢查,bash會替你作這件事。 不過你也沒有辦法使用$? 來獲取命令執行狀態了,由於bash沒法得到任何非0的返回值。 你可使用另外一種結構,使用command
if [ "$?"-ne 0]; then echo "command failed"; exit 1; fi " 能夠替換成: command || echo "command failed"; exit 1; (這種寫法並不嚴謹,我當時的場景是執行ssh "commond", 因此能夠返回退出碼後面經過[ #? -eq 0 ]來作判斷,若是是在shell中不管成功仍是失敗都會exit) 修改以下(謝謝評論的朋友指正) command || (echo "command failed"; exit 1) ; 或者使用: if ! command; then echo "command failed"; exit 1; fi