shell中每一行執行完以後都會有狀態碼,下一行命令用$?得到上一行命令的狀態碼,參考:Shell中的特殊變量$?-查看上一條Shell命令的退出狀態碼(exit status)linux
在shell中,默認當某行命令執行出錯以後,後面的命令會繼續執行,這會致使後面的代碼會出現不可預知的錯誤,因此當咱們的shell程序出錯時,應該當即中止執行shell程序。那應該怎麼處理?最簡單粗暴的方式是在shell文件中加上set -e。當執行語句的狀態碼不爲0時,直接退出程序。可是有不少狀況是要在出錯的狀況下繼續執行的,好比檢測hdfs目錄是否存在。不存在就新建一個,這個時候能夠先暫時關閉set +e,語句運行完以後,再打開set -e。shell
set -x #啓動"-x"選項 要跟蹤的程序段 set +x #關閉"-x"選項 |
也能夠使用別的方式。參考:Shell腳本調試技術 Unix/Linux 腳本中 「set -e」 的做用spa