Bash 編程小技巧分享:錯誤與回溯函數(shù)調用棧
當我們在寫 Bash 腳本時,經(jīng)常會遇到一步錯,步步錯的場景,而就算錯誤了,我們不進行判斷有時候也很難找到錯誤。
而有一個小技巧可以在錯誤時直接退出,那就是 -e 選項。這個選項可以在一整條命令以失敗退出時立即終止程序的執(zhí)行。
而更進一步,我們可以看到當Python等語言報錯時,會用函數(shù)調用?;厮?,而 Bash 也可以做到!
以下為代碼示例:
我們可以借助 FUNCNAME 獲取每一層調用的函數(shù)名,通過 BASH_LINENO 獲取每一層調用的行,通過 BASH_SOURCE 獲取調用的文件,這樣我們可以完整的跟蹤整個函數(shù)調用,就像 Python 的調用?;厮菽菢樱?/p>
以下為運行結果:
這將可以使你的 Bash 腳本安全性直線上升。
當然,一些允許錯誤的場景你可以通過短路運算符 || 等方法使一個單位語句返回始終為真
例如: ...?|| true
這樣,當 ... 執(zhí)行失敗時,會通過短路運算符執(zhí)行 true 來進行一個成功的退出, ERR 將不會被傳播
標簽: