shell經常使用調試方法

檢查語法shell

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

sh -n script_name.shspa

啓動調試調試

sh -x script_name.scode

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

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

加上-v可將源碼一塊兒輸出
中斷調試io

在調試過程當中能夠按Ctrl + Z中斷調試,觀察結果,而後再按fg鍵繼續調試便可。file

調試代碼塊語法

上面的-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

相關文章
相關標籤/搜索