写可在生产跑的 Bash 脚本:参数校验、错误中断、幂等、日志、清理,一步不缺。
部署脚本、批量文件处理、定时任务、运维工具。
帮我写一个 Bash 脚本。 【目标】{{脚本目标}} 【环境】{{运行环境}} 【参数】{{输入参数}} 【失败处理】{{失败处理}} 硬性要求: 1. 开头 set -Eeuo pipefail,并写 trap 处理 ERR 与 EXIT(EXIT 里做清理,ERR 里打印行号)。 2. 参数校验:缺参、非法值、路径不存在、磁盘空间不足,各给明确报错并 exit 非 0。 3. 幂等:重复执行不能产生重复数据或破坏已有结果,说明幂等是怎么保证的。 4. 日志:带时间戳的函数 log/info/err,输出到 stdout 与可选日志文件。 5. 关键步骤前先 dry-run 检查(例如先算目标文件数、总体积),打印将要做什么再执行。 6. 有并发保护:用 flock 或 pid 文件,防止定时任务重叠。 7. 不使用需要额外安装的依赖,只用 {{运行环境}} 里有的命令。 8. 所有变量加引号,路径含空格也要能用。 输出: - 完整脚本(带段落注释) - 使用说明:参数含义、cron 示例、退出码表 - 3 个容易踩的坑(例如通配符在空目录时被当字面量、find 输出含换行的文件名、tar 打包时路径写成绝对路径) - 一段自测清单:5 条手工验证步骤 不要用 rm -rf 直接删除用户目录,删除操作必须先校验路径前缀。
管道中间命令失败默认不报错,加 pipefail 才能捕获。
所有变量引用加双引号,find 用 -print0 配 xargs -0。