Shell調試篇


檢查語法

-n選項只做語法檢查,而不執行腳本。

sh -n script_name.sh

啟動調試

sh -x script_name.sh

進入調試模式后,Shell依次執行讀入的語句,產生的輸出中有的帶加號,有的不帶,如下。帶加號表示該條語句是Shell執行的。不帶加號表示該語句是Shell產生的輸出。

+ array=(1 2 3 4 5)
+ for i in '${array[*]}'
+ echo 1
1

中斷調試

在調試過程中可以按Ctrl + Z中斷調試,觀察結果,然后再按fg鍵繼續調試即可。

調試代碼塊

上面的-x選項是調試整個腳本的,如果腳本很大,會很不方便,還有一種方法是調試某一塊代碼的,如下

set -x
...
code block
...
set +x

這樣,只對set -x與set +x之間的代碼進行跟蹤。

調試函數

set -x

Function call

set +x

常見錯誤診斷

xxx.sh: cannot shift

這種錯誤一般是參數傳遞有誤,比如沒有給參數,或者參數個數少了。因為shell腳本使用shift來獲取下一個參數,如果個數不對,shift命令就會失敗。

xxx.sh: ^M: not found

^M是Windows上的回車符\r在UNIX上的顯示形式。這種情況多半是在Windows上編輯了shell腳本,然后拿到UNIX/Linux上執行。只要將文件中所有的\r刪除即可。

tr -d "\r" <oldfile.sh > newfile.sh

或者一個更標准的方法,因為\r的ASCII碼是\015,所以可以這樣。

tr -d "\015" < oldfile.sh > newfile.sh

設置調試陷阱

稍后繼續。。。

==


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM