set -euo pipefail 能暴露未定义变量和管道失败,但它不能替代对失败场景的设计。条件表达式、命令替换和不同 Shell 版本仍有细微差异。

把关键结果显式判断

配置检查、数据导出和服务重启应使用清晰的 if 分支,并输出失败原因。依赖隐式退出行为会让回滚路径难以阅读。

小心清理逻辑

临时文件和后台进程适合用 trap 清理。清理命令自身不应掩盖原始退出码,也不能删除未经确认的目录。

在目标 Shell 测试

脚本声明使用 sh 时,不应依赖 Bash 数组等扩展。持续集成环境要与生产解释器保持一致。