写脚本难免出错,调试是开发过程中必不可少的环节。Shell 提供了多种调试手段,从简单的 echo 输出到详细的执行追踪,掌握这些方法能大大提高排错效率。
脚本出错的原因五花八门:语法错误、逻辑错误、变量值不符合预期、命令执行失败等。光看代码有时候很难发现问题,需要借助调试工具来定位。
常见的调试需求:
调试模式:Bash 内置的调试选项,可以显示执行的每条命令、变量值变化等。-x 选项是最常用的调试手段。
错误处理:检测命令是否执行成功,根据结果采取不同措施。$? 变量保存上一个命令的退出状态,trap 命令可以捕获信号和错误。
set 选项:通过 set 命令设置脚本的运行行为,比如遇到错误立即退出、使用未定义变量时报错等。这些选项能让脚本更健壮。
日志记录:把脚本的执行过程记录下来,方便事后分析。可以记录到文件或系统日志,是生产环境必备的调试手段。
不同场景需要不同层次的调试:
快速检查:在关键位置加 echo,输出变量值或执行状态。适合简单问题的快速定位。
执行追踪:开启 -x 选项,查看每条命令的执行情况。适合追踪脚本的完整执行流程。
详细输出:开启 -v 选项,显示脚本源代码。配合 -x 可以同时看到源码和执行结果。
错误捕获:用 trap 捕获错误,在出错时执行特定操作。适合需要清理资源或发送通知的场景。
这一章我们学习:
-x、-v 选项的使用,调试特定代码段set -e、set -u 等常用选项掌握这些调试技巧,能让脚本开发和维护事半功倍。