Shell除錯篇 轉

2021-09-06 14:18:19 字數 903 閱讀 6856

檢查語法

-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 在執行指令碼時,先將指令碼的內容輸出到螢幕上然後執行指令...