方式一: 通過echo方式
【功能】: 最簡單的除錯方法,可以在任何懷疑出錯的地方用echo列印變數
【場合】:
所有懷疑可能有問題的地方,省略了所有
【示例】
:echo $var
方式二: 通過選項方式[-ncxv]
-n
【功能】:
讀取shell指令碼,但不實際執行 【
場合】
: 用於測試shell指令碼中是否存在語法錯誤
【示例】:
bash -n script.sh
-c
【功能】:
該選項使shell解析器從字串而非檔案中讀取並執行命令 【
場合】
: 當需要除錯一小段指令碼的執行結果時,非常方便
【示例】:
bash -c 'x=1;y=2;let z=x+y;echo "z=$z"'
-v
【功能】:
區別於-x引數,該選項列印命令列的原始內容,-x引數列印出經過替換後命令列的內容 【
場合】
: 僅想顯示指令碼的內容時
【示例】:
bash -v script.sh
-x
【功能】:
提供跟蹤執行資訊,將執行指令碼的過程中把實際執行的每個命令顯示出來,行首顯示+,+後面顯示經過替換之後的命令列內容,有助於分析實際執行的是什麼命令. 【
場合】
: 是除錯shell指令碼的強有力工具,是shell指令碼首選的除錯手段
【示例】
:方式三: 通過test的方式
備註: 利用test方法可以檢查邏輯操作符,檔案狀態,字串,數值測試!返回值0為真,其他任何值為假
方式四: 通過trap來除錯
【作用】:
用於捕獲指定的訊號並執行預定義的命令
【語法】:
trap 'command' signal
【說明】:
signal是要捕獲的訊號,command是捕獲到指定的訊號,所要執行的命令, 可以用kill -l命令看到系統中全部 可用的訊號名,捕獲訊號後所執行的命令, 可以是一條或多條合法的shell語句,也可以是乙個函式名,shell指令碼執行時,會產生三個偽訊號(非作業系統產生,而僅是shell本身產生,稱之為偽資訊),通過使用trap捕獲這三個偽訊號並輸出資訊對除錯大有幫助
shell
三個偽訊號
exit
從乙個函式中退出或整個執行完畢
err
當乙個命令執行不成功,返回非0狀態時
debug
指令碼中每一條命令執行之前
【示例】:
調整後輸出結果:
方式五: 使用除錯工具-bashdb
【功能】:
類似於gdb的除錯工具,可以完成對shell指令碼的斷點設定,單步執行,變數觀察等許多功能
【場合】
: 指令碼比較大時,通過-x引數除錯時已不方便時.
【用法】:
【說明】
:該工具預設未安裝,當前最新版本為:
4.3-0.91,:
1). 如果是ubuntu系統,直接用
apt-get
來安裝
【示例】
【常用命令】
shell指令碼的除錯技巧
請參考文章 http www.ibm.com developerworks cn linux l cn shell debug index.html 讀後的感覺,還是用shell的選項靈活,方便。trap方式在捕捉err訊號的時候比較方便。shell的執行選項 n 只是讀取指令碼,但不執行命令。用於...
shell指令碼的除錯技巧
請參考文章 讀後的感覺,還是用shell的選項靈活,方便。trap方式在捕捉err訊號的時候比較方便。shell的執行選項 n 只是讀取指令碼,但不執行命令。用於在執行指令碼前確認指令碼中是否存在語法錯誤。c 選項使shell直譯器從乙個字串中而不是從乙個檔案中讀取並執行shell命令。當需要臨時測...
Shell 指令碼除錯
除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...