shell指令碼的除錯技巧

2021-09-08 17:42:25 字數 1078 閱讀 6066

請參考文章:

讀後的感覺,還是用shell的選項靈活,方便。

trap方式在捕捉err訊號的時候比較方便。

shell的執行選項

-n: 只是讀取指令碼,但不執行命令。用於在執行指令碼前確認指令碼中是否存在語法錯誤。

-c:選項使shell直譯器從乙個字串中而不是從乙個檔案中讀取並執行shell命令。當需要臨時測試一小段指令碼的執行結果時,可以使用這個選項。

-x:選項可用來跟蹤指令碼的執行,是除錯shell指令碼的強有力工具。「-x」選項使shell在執行指令碼的過程中把它實際執行的每乙個命令列顯示出來,並且在行首顯示乙個"+"號。 "+"號後面顯示的是經過了變數替換之後的命令列的內容,有助於分析實際執行的是什麼命令。 「-x」選項使用起來簡單方便,可以輕鬆對付大多數的shell除錯任務,應把其當作首選的除錯手段。

shell的執行選項除了可以在啟動shell時指定外,亦可在指令碼中用set命令來指定。 "set -引數"表示啟用某選項,"set +引數"表示關閉某選項。有時候我們並不需要在啟動時用"-x"選項來跟蹤所有的命令列,這時我們可以在指令碼中使用set命令

現在讓我們來總結一下除錯shell指令碼的過程:

首先使用「-n」選項檢查語法錯誤,然後使用「-x」選項跟蹤指令碼的執行,使用「-x」選項之前,別忘了先定製ps4變數的值來增強「-x」選項的輸出信 息,至少應該令其輸出行號資訊(先執行export ps4='+[$lineno]',更一勞永逸的辦法是將這條語句加到您使用者主目錄的.bash_profile檔案中去),這將使你的除錯之旅更輕鬆。

也可以利用trap,除錯鉤子等手段輸出關鍵除錯資訊,快速縮小排查錯誤的範圍,並在指令碼中使用「set -x」及「set +x」對某些**塊進行重點跟蹤。

這樣多種手段齊下,相信您已經可以比較輕鬆地抓出您的shell指令碼中的臭蟲了。如果您的指令碼足夠複雜,還需要更強的調 試能力,可以使用shell偵錯程式bashdb,這是乙個類似於gdb的除錯工具,可以完成對shell指令碼的斷點設定,單步執行,變數觀察等許多功能, 使用bashdb對閱讀和理解複雜的shell指令碼也會大有裨益。關於bashdb的安裝和使用,不屬於本文範圍,您可參閱

Shell指令碼除錯技巧

方式一 通過echo方式 功能 最簡單的除錯方法,可以在任何懷疑出錯的地方用echo列印變數 場合 所有懷疑可能有問題的地方,省略了所有 示例 echo var 方式二 通過選項方式 ncxv n 功能 讀取shell指令碼,但不實際執行 場合 用於測試shell指令碼中是否存在語法錯誤 示例 ba...

shell指令碼的除錯技巧

請參考文章 http www.ibm.com developerworks cn linux l cn shell debug index.html 讀後的感覺,還是用shell的選項靈活,方便。trap方式在捕捉err訊號的時候比較方便。shell的執行選項 n 只是讀取指令碼,但不執行命令。用於...

Shell 指令碼除錯

除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...