Bash
bash 調試選項?
在我看來(如果我錯了,請糾正我)bash 在錯誤消息方面非常糟糕,這些錯誤消息可以正確地告訴您腳本中的問題出在哪裡。例如,我經常會得到“第 953 行的錯誤 EOF”。這真正意味著
fi
在第 127 行有一個缺失。或者,另一個經典是“-bash: line 60: syntax error near unexpected token ‘(’”。這真正意味著我已將我的函式重新聲明mything() {}
為別名在第 739 行alias mything=
,除此之外,bash 錯誤指向沒有實際問題的第 60 行(所以我花了一段時間才在第 739 行找到罪魁禍首)。我試圖將最熱門的“bash 調試”工具載入到 VS Code 中,但我無法讓它工作(我按 F5 執行,然後出現一個框,上面寫著“選擇調試器”,所以我選擇了 bash 調試,但沒有任何反應) . 我嘗試了一個允許互動式執行程式碼的線上工具,並說它可以幫助調試,但這也沒有幫助。我做了一些 PowerShell,它在報告問題根源方面做得更好。是否有方法(工具或 github 或線上上的腳本分析工具可以掃描腳本以查找函式和別名被重新聲明為同名的問題以及其他類似的測試)使我們能夠更好地調試 bash 腳本?
我在一本德語 shell 腳本書中找到了這個簡單的 shell 斷點調試器。您可以在要開始調試的任何地方添加以下兩行,並通過在執行時按 Enter 或評估變數和函式來逐步執行。
read var # set simple breakpoint echo -e "dbg> \c"; read cmd; eval $cmd
執行腳本
$ dbg> doSomethingFunction $ dbg> echo $SOME_VAR
或者,過去使用
set -x
和修改提示變數PS4
對我有幫助。PS4='+ ${BASH_SOURCE##*/}.${LINENO} ${FUNCNAME}: '