next up previous contents
Next: 腳本預設參數 Up: Shell Scripts Previous: set 基本用法   Contents

追蹤與除錯

  1. 在腳本中可以用 set 命令來追蹤除錯腳本。sh 執行腳本時一樣可以使用 set 選項進行追蹤除錯。複習幾個 set 選項:
    選項說明:
        -n   不要執行 script,僅查詢語法的問題。
        -t  執行完隨後的指令,即退出 shell。
        -u  當執行時使用到未定義過的變數,則顯示錯誤信息。
        -v   執行 sccript 前,先將 script 的內容輸出到螢幕上;
        -x  執行指令後,會先顯示該指令及所下的選項。
    
  2. sh03.sh 第 4 行刪除一個雙引號,存成 sh03-1.sh。
    [dywang@dywmac zzz]$ cat -n sh03-1.sh 
         1	#!/bin/bash
         2	read -p "請輸入一串數字: " -t 5 num
         3	
         4	num=${num:-"1 2 3 4 5 6 7 8 9}
         5	num=$(echo "$num" | sed 's/ /+/g')
         6	total=$(echo "$num" | bc)
         7	echo $num=$total
    
  3. sh -n 測試 sh03-1.sh,出現第 4 行找不到配對的雙引號,第 8 行檔案結束語法錯誤。
    [dywang@dywmac zzz]$ sh -n sh03-1.sh 
    sh03-1.sh: line 4: unexpected EOF while looking for matching `"'
    sh03-1.sh: line 8: syntax error: unexpected end of file
    
  4. sh -v 執行 sh03.sh,每行執行前會先將執行命令內容輸出到螢幕上。
    [dywang@dywmac zzz]$ sh -v sh03.sh 
    #!/bin/bash
    read -p "請輸入一串數字: " -t 5 num
    請輸入一串數字: 
    num=${num:-"1 2 3 4 5 6 7 8 9"}
    num=$(echo "$num" | sed 's/ /+/g')
    total=$(echo "$num" | bc)
    echo $num=$total
    1+2+3+4+5+6+7+8+9=45
    exit 0
    
  5. sh -x 執行 sh03.sh,執行過程會列印出來,且在最前面會加上"+" 號表示程式段落。
    [dywang@dywmac zzz]$ sh -x sh03.sh 
    + read -p '請輸入一串數字: ' -t 5 num
    請輸入一串數字: + num='1 2 3 4 5 6 7 8 9'
    ++ echo '1 2 3 4 5 6 7 8 9'
    ++ sed 's/ /+/g'
    + num=1+2+3+4+5+6+7+8+9
    ++ echo 1+2+3+4+5+6+7+8+9
    ++ bc
    + total=45
    + echo 1+2+3+4+5+6+7+8+9=45
    1+2+3+4+5+6+7+8+9=45
    + exit 0
    



De-Yu Wang 2019-08-23