檢查語法
-n選項只做語法檢查,而不執行指令碼。
sh -n script_name.sh
啟動除錯
sh -x script_name.sh
進入除錯模式後,shell依次執行讀入的語句,產生的輸出中有的帶加號,有的不帶,如下。帶加號表示該條語句是shell執行的。不帶加號表示該語句是shell產生的輸出。
+ array=(1 2 3 4 5)
+ for i in '$'
+ echo 1
中斷除錯
在除錯過程中可以按ctrl + z中斷除錯,觀察結果,然後再按fg鍵繼續除錯即可。
除錯**塊
上面的-x選項是除錯整個指令碼的,如果指令碼很大,會很不方便,還有一種方法是除錯某一塊**的,如下
set -x
code block
set +x
這樣,只對set -x與set +x之間的**進行跟蹤。
除錯函式
set -x
function call
set +x
常見錯誤診斷
***.sh: cannot shift
這種錯誤一般是引數傳遞有誤,比如沒有給引數,或者引數個數少了。因為shell指令碼使用shift來獲取下乙個引數,如果個數不對,shift命令就會失敗。
***.sh: ^m: not found
^m是windows上的回車符\r在unix上的顯示形式。這種情況多半是在windows上編輯了shell指令碼,然後拿到unix/linux上執行。只要將檔案中所有的\r刪除即可。
tr -d "\r" newfile.sh
或者乙個更標準的方法,因為\r的ascii碼是\015,所以可以這樣。
tr -d "\015" < oldfile.sh > newfile.sh
資料除錯 TCP轉串列埠 串列埠轉TCP除錯
1 android socket開發了乙個socket客戶端,當輸入伺服器ip以及埠,建立連線之後,android可以傳送資料到電腦接收伺服器端。25如果電腦端沒有socket伺服器怎麼辦?方法如下 6 7 1 虛擬串列埠,建立一對虛擬串列埠com2 com3 89 2 開啟兩個串列埠助手,分別選擇...
Shell 指令碼除錯
除錯功能是每一門程式語言都應該實現的重要特性,每個系統程式設計師都應該了解bash的除錯選項 1.使用選項 x,啟動shell指令碼的跟蹤除錯功能,將執行的每一條命令和輸出的結果輸出 test.sh檔案 bin bash foriin do echo i done echo script execu...
除錯shell指令碼
遇見莫名其妙的錯誤,先dos2uinux指令碼。echo命令是最有用的除錯指令碼工具之一。一般在可能出現問題的指令碼前後加入echo命令 使用bash命令引數進行除錯 引數 n 不會執行該指令碼,僅查詢指令碼語法是否有問題,並給出錯誤提示。v 在執行指令碼時,先將指令碼的內容輸出到螢幕上然後執行指令...