Bash:
使用调试器

如何操作:

Bash没有像其他一些语言那样内置调试器,但你可以使用内置命令比如set -x来追踪发生了什么。或者,作为升级版,有bashdb,一个合适的调试器可以逐步执行你的代码。这里有个预览:

# 使用 set -x 进行调试
set -x
echo "开始调试"
my_var="你好,调试世界!"
echo $my_var
set +x

# 使用bashdb
# 用你的包管理器安装bashdb,例如,apt、yum、brew。
# 调试一个名为my_script.sh的脚本:
bashdb my_script.sh

使用 set -x 运行时的输出:

+ echo '开始调试'
开始调试
+ my_var='你好,调试世界!'
+ echo '你好,调试世界!'
你好,调试世界!
+ set +x

深入了解

历史上,调试Bash脚本意味着在代码中到处都是echo语句。但随后出现了set -x,让我们能够不借助手动打印就窥见运行时执行情况。对于那些渴望更多控制的人来说,受到C/C++中gdb调试器启发的bashdb调试器应运而生。

至于替代方案,除了set命令(-x-v-e)外,其他选项包括将输出重定向到文件以供分析或使用外部工具如ShellCheck进行静态分析。

在实现方面,set -x很简单;它是一个原生Bash选项,可以打印出执行的命令及其参数。另一方面,bashdb允许逐步执行代码、设置断点和评估表达式 - 这些都是对付更难以捉摸的错误的有力武器。

参见

  • Bash调试器项目:http://bashdb.sourceforge.net/
  • 《高级Bash脚本编程》由Chris Johnson和Jayant Varma撰写。
  • ShellCheck进行静态分析:https://www.shellcheck.net/