set -u:遇到不存在的變數就會報錯,並停止執行;
set -x:在執行結果之前,先輸出執行的那一行命令;
set -e:
set -e
:指令碼只要發生錯誤,就終止執行
set +e
表示關閉-e
選項
command || true
,使得該命令即使執行失敗,指令碼也不會終止執行;
bash 會把最後乙個子命令的返回值,作為整個命令的返回值。也就是說,只要最後乙個子命令不失敗,管道命令總是會執行成功,因此它後面命令依然會執行,set -e
就失效了。
set -o pipefail
用來解決這種情況,只要乙個子命令失敗,整個管道命令就失敗,指令碼就會終止執行
在指令碼頭部新增set -euxo pipefail
或執行時傳入引數$ bash -euxo pipefail script.sh進行shell指令碼的除錯
Linux命令學習筆記 更新 shell除錯
nohup linux命令,不結束通話執行命令 nohup 命令執行由 command引數和任何相關的 arg引數指定的命令,忽略所有結束通話 sighup 訊號。在登出後使用 nohup 命令執行後台中的程式。要執行後台中的 nohup 命令,新增 表示 and 的符號 到命令的尾部。如果不將 n...
指令碼命令 利用 tee 命令除錯shell指令碼
在編寫shell指令碼時,除錯是個比較麻煩的事,特別是涉及到多層管道命令的時候,會產生多個中間結果,tee命令的作用是從標準輸入中讀取資料寫入標準輸出或檔案中,利用它可以從管道中讀取中間結果並寫入本地臨時檔案中,通過中間結果可以一步一步的定位到指令碼的錯誤 例項 下面是乙個簡單的指令碼,指令碼中 p...
Shell 指令碼除錯
除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...