脚本调试

写脚本难免出错,调试是开发过程中必不可少的环节。Shell 提供了多种调试手段,从简单的 echo 输出到详细的执行追踪,掌握这些方法能大大提高排错效率。

为什么需要调试

脚本出错的原因五花八门:语法错误、逻辑错误、变量值不符合预期、命令执行失败等。光看代码有时候很难发现问题,需要借助调试工具来定位。

常见的调试需求:

  • 查看脚本执行到哪一步
  • 确认变量的值是否正确
  • 找出哪个命令执行失败
  • 追踪脚本的执行流程

调试方法概览

调试模式:Bash 内置的调试选项,可以显示执行的每条命令、变量值变化等。-x 选项是最常用的调试手段。

错误处理:检测命令是否执行成功,根据结果采取不同措施。$? 变量保存上一个命令的退出状态,trap 命令可以捕获信号和错误。

set 选项:通过 set 命令设置脚本的运行行为,比如遇到错误立即退出、使用未定义变量时报错等。这些选项能让脚本更健壮。

日志记录:把脚本的执行过程记录下来,方便事后分析。可以记录到文件或系统日志,是生产环境必备的调试手段。

调试的层次

不同场景需要不同层次的调试:

快速检查:在关键位置加 echo,输出变量值或执行状态。适合简单问题的快速定位。

执行追踪:开启 -x 选项,查看每条命令的执行情况。适合追踪脚本的完整执行流程。

详细输出:开启 -v 选项,显示脚本源代码。配合 -x 可以同时看到源码和执行结果。

错误捕获:用 trap 捕获错误,在出错时执行特定操作。适合需要清理资源或发送通知的场景。

本章内容

这一章我们学习:

  • 调试模式-x-v 选项的使用,调试特定代码段
  • 错误处理:退出状态码、错误检测、trap 命令
  • set 命令选项set -eset -u 等常用选项
  • 日志记录:日志函数、日志级别、日志轮转

掌握这些调试技巧,能让脚本开发和维护事半功倍。