我有一個 bash 腳本myscript.sh
,裡面有很多函數。要運行一個函數,我會寫
source myscript.sh; myfunction
如何調試這樣的功能?
答案1
只需在要調試的部分之前添加這些行即可。
set -v -x -e
並禁用它。
set +v +x +e
答案2
在腳本中啟用偵錯並使用functrace
.
set -x
set -o functrace
答案3
您還應該能夠在 Bash 中使用:
$ set -xT
這使得函數追蹤和
$ set +xT
禁用。
另外,參考另一個發佈的答案,我不建議使用 -v 進行偵錯(詳細模式),除非您正在檢查腳本/shell 命令集的語法。有時有用的另一種(通用)解決方案是-n
結合使用該選項-x
。這將“運行”腳本/命令,而無需實際執行運行命令的最後一步。這通常可以讓您在 shell 擴充功能等中發現困難的錯誤,而不會造成不必要的混亂。