shell 指令碼除錯

2021-09-22 03:22:00 字數 3428 閱讀 9877

shell 指令碼除錯

引數 -x 跟蹤指令碼

shell 指令碼除錯引數 -x  

#同樣sh 也有-x 除錯功能,在指令碼尾部新增「abc」,然後使用-x 除錯該指令碼,將返回錯誤資訊 

使用ps4,更詳細的輸出

引數 -n 檢查語法是否錯誤,但不會實際執行命令!

去掉指令碼 if 後邊的 then 試試

sh -n /usr/local/keepalived/haproxy_check.sh  

/usr/local/keepalived/haproxy_check.sh: line 28: syntax error near unexpected token `else' 

/usr/local/keepalived/haproxy_check.sh: line 28: `        else' 

其它引數摘自ibm

使用shell的執行選項,本節將介紹一些常用選項的用法: 

-n 只讀取shell指令碼,但不實際執行 

-x 進入跟蹤方式,顯示所執行的每一條命令 

-c "string" 從strings中讀取命令 

「-n」可用於測試shell指令碼是否存在語法錯誤,但不會實際執行命令。

在shell指令碼編寫完成之後,實際執行之前,首先使用「-n」選項來測試指令碼是否存在語法錯誤是乙個很好的習慣。

因為某些shell指令碼在執行時會對系統環境產生影響,比如生成或移動檔案等,如果在實際執行才發現語法錯誤,

您不得不手工做一些系統環境的恢復工作才能繼續測試這個指令碼。 

「-c」選項使shell直譯器從乙個字串中而不是從乙個檔案中讀取並執行shell命令。

當需要臨時測試一小段指令碼的執行結果時,可以使用這個選項,如下所示: 

sh -c 'a=1

;b=2

;let 

c=$a+$b;echo "

c=$c"' 

"-x"選項可用來跟蹤指令碼的執行,是除錯shell指令碼的強有力工具。

「-x」選項使shell在執行指令碼的過程中把它實際執行的每乙個命令列顯示出來,並且在行首顯示乙個"+"號。 

"+"號後面顯示的是經過了變數替換之後的命令列的內容,有助於分析實際執行的是什麼命令。 

「-x」選項使用起來簡單方便,可以輕鬆對付大多數的shell除錯任務,應把其當作首選的除錯手段。  

總結摘自ibm

除錯shell指令碼的過程: 

首先使用「-n」選項檢查語法錯誤,然後使用「-x」選項跟蹤指令碼的執行,使用「-x」選項之前,

別忘了先定製ps4變數的值來增強「-x」選項的輸出資訊,至少應該令其輸出行號資訊

(先執行export ps4

='+[$lineno]'

,更一勞永逸的辦法是將這條語句加到您使用者主目錄的.bash_profile檔案中去),這將使你的除錯之旅更輕鬆。

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

這樣多種手段齊下,相信您已經可以

Shell 指令碼除錯

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

除錯shell指令碼

遇見莫名其妙的錯誤,先dos2uinux指令碼。echo命令是最有用的除錯指令碼工具之一。一般在可能出現問題的指令碼前後加入echo命令 使用bash命令引數進行除錯 引數 n 不會執行該指令碼,僅查詢指令碼語法是否有問題,並給出錯誤提示。v 在執行指令碼時,先將指令碼的內容輸出到螢幕上然後執行指令...

shell 指令碼除錯

發表於 2016 4 27 0 03 30 1693 人閱讀 分類 shell 除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash...