Linux Shell 腳本調試


方法如下所示:
(1) 使用選項–x,啟用shell腳本的跟蹤調試功能:
$ bash -x script.sh
運行帶有-x標志的腳本可以打印出所執行的每一行命令以及當前狀態。注意,你也可以使用sh -x script。

(2) 使用set -x和set +x對腳本進行部分調試。例如:
#!/bin/bash
#文件名: debug.sh
for i in {1..6};
do
set -x
echo $i
set +x
done
echo "Script executed"
在上面的腳本中,只會打印出echo $i的調試信息,因為使用了-x和+x對調試區域進行了限制。

(3) 前面介紹的調試手段是Bash內建的。它們通常以固定的格式生成調試信息。但是在很多情況下,我們需要以自定義格式顯示調試信息。這可以通過傳遞 _DEBUG環境變量來建立這類調試風格。
請看下面的代碼:

#!/bin/bash
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || :
}
for i in {1..10}
do
DEBUG echo $i
done

可以將調試功能置為"on"來運行上面的腳本:
$ _DEBUG=on ./script.sh
我們在每一個需要打印調試信息的語句前加上DEBUG。如果沒有把 _DEBUG=on傳遞給腳本,那么調試信息就不會打印出來。在Bash中,命令“:”告訴shell不要進行任
何操作。

 

附注:

1.  -x標識將腳本中執行過的每一行都輸出到stdout。不過,我們也可能只關注腳本某些部分
的命令及參數的打印輸出。針對這種情況,可以在腳本中使用set builtin來啟用或禁止調試
打印。
 set –x:在執行時顯示參數和命令。
 set +x:禁止調試。
 set –v:當命令進行讀取時顯示輸入。
 set +v:禁止打印輸入。

 

2. shebang的妙用
把shebang從#!/bin/bash改成 #!/bin/bash -xv,這樣一來,不用任何其他選項就可以
啟用調試功能了。

 


免責聲明!

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



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