調試腳本所花費的時間常常比編寫代碼還要多。所有編程語言都應該實現的一個特性就是在出現始料未及的情況時,能夠生成跟蹤信息。調試信息可以幫你弄清楚是什麼原因使得程式行為異常。 ...
調試腳本所花費的時間常常比編寫代碼還要多。所有編程語言都應該實現的一個特性就是在出現始料未及的情況時,能夠生成跟蹤信息。調試信息可以幫你弄清楚是什麼原因使得程式行為異常。
使用sh -x
調試
運行帶有sh -x
選項的腳本可以列印出所執行的每一行命令以及當前狀態。
sh -x script.sh
# 或者
bash -x script.sh
例如test.sh
#!/bin/bash
for i in {103..109}; do
echo $i
done
執行sh -x test.sh
+ for i in '{103..109}'
+ echo 103
103
+ for i in '{103..109}'
+ echo 104
104
+ for i in '{103..109}'
+ echo 105
105
+ for i in '{103..109}'
+ echo 106
106
+ for i in '{103..109}'
+ echo 107
107
+ for i in '{103..109}'
+ echo 108
108
+ for i in '{103..109}'
+ echo 109
109
使用set
調試
調試腳本中部分代碼,可以使用set
命令。
set參數說明:
參數 | 說明 |
---|---|
-x | 在執行時顯示參數和命令。 |
+x | 禁止調試。 |
-v | 當命令進行讀取時顯示輸入。 |
+x | 禁止列印輸入。 |
配置shebang調試
把shebang從#!/bin/bash
改成 #!/bin/bash -xv
,這樣一來,不用任何其他選項就可以啟用調試功能了。