Linux Shell 程式調試

來源:互聯網
上載者:User

標籤:

Linux Shell 程式調試

       Shell程式的調試是通過運行程式時加入相關調試選項或在指令碼程式中加入相關語句,讓shell程式在執行過程中顯示出一些可供參考的“調試資訊”。當然,使用者也可以在shell程式中的適當位置加入一些echo命令用於調試與跟蹤。

 

方法一:在運行指令碼程式時加入調試選項:

【用法】bash –選項 ./shellScript.sh

幾個常用的調試選擇項如下:
        -e :如果一個命令返回一個非0退出狀態值(失敗),就退出。
        -n : 不需要執行指令碼只是檢查文法結構,返回所有的語法錯誤資訊。
        -u : 置換時把未設定的變數看作出錯。
        -v : 當讀入shell輸入行時,把它們顯示出來。
        -x : 執行命令時,把命令和它們的參數顯示出來。
 

方法二:在指令碼程式中通過set命令偵錯工具:

【用法】set –選項 set +選項      #set命令的常用選項同上

        以在Shell程式內部用“set -選擇項”的形式引用,而“set +選擇項”則將禁止該選擇項起作用。如果只想對程式的某一部分使用某些選擇項時,則可以將該部分用上面兩個語句包圍起來。

(1)未置變數退出(-u)和立即退出(-e)

  未置變數退出特性允許使用者對所有變數進行檢查,如果引用了一個未賦值的變數就終止Shell程式的執行。Shell通常允許未置變數的使用,在這種情況下,變數的值為空白。如果設定了未置變數退出選擇項,則一旦使用了未置變數就顯示錯誤資訊,並終止程式的運行。未置變數退出選擇項為-u。

  當Shell運行時,若遇到不存在或不可執行檔命令、重新導向失敗或命令非正常結束等情況時,如果未經重新定向,該出錯資訊會顯示在終端螢幕上, 而Shell程式仍將繼續執行。要想在錯誤發生時迫使Shell程式立即結束,可以使用-e選項將Shell程式的執行立即終止。

(2)Shell程式的跟蹤(-v或-x)

  調試Shell程式的主要方法是利用Shell命令解釋程式的-v或-x選項來跟蹤程式的執行。-v選擇項使Shell在執行程式的過程中,把它讀入的每一個命令列都顯示出來,而-x選擇項使Shell在執行程式的過程中把它執行的每一個命令在行首用一個+加上命令名顯示出來。並把每一個變數和該變數所取的值也顯示出來。因此,它們的主要區別在於:在執行命令列之前無-v,則顯示出命令列的原始內容,而有-v時則顯示出經過替換後的命令列的內容。

 

【例子】

./iftest.sh:

#! /bin/bashiftest(){    if [ $# -ne 1 ]     then        echo "Usage: $0 dir "        exit 1    fi         # set -v or set -x      #若選擇方法二,則取消注釋,並選擇其中一個set命令    if [ -d "$1" ]    then        ls -l $1        exit 0    fi      # set +v or set +x     #若選擇方法二,則取消注釋,並選擇其中一個set命令    echo "Warn:$1 is not a directory!"    exit 2}

iftest ..

方法一運行結果:

bash -v ./iftest.sh

bash -x ./iftest.sh

註:$#=1    $1=..  

 

方法二運行結果:  

取消iftest.sh程式中的注釋,並且只選擇set -x 和 set +x命令,表明只對第二個if..fi語句塊進行調試。

./iftest.sh

 

 

感謝:http://www.cnblogs.com/hicome/archive/2007/10/30/943002.html

Linux Shell 程式調試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.