Shell指令碼除錯技巧

2021-07-12 04:02:27 字數 2723 閱讀 7656

方式一: 通過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...