当前位置: 首页 > news >正文

Shell Daily 2025-12-21: 管道防隐患 (Pipefail)

Shell Daily 2025-12-21: 管道防隐患 (Pipefail)

Shell 管道 (|) 有个极其危险的默认行为:整个管道的退出状态只取决于最后一个命令。这意味着,前面的关键任务如果崩了,只要最后一步(比如格式化输出)成功了,脚本就会欺骗你说“一切正常”。

怎么用

在脚本开头加上这行配置,开启“严格模式”。

  • Bash / Zsh: set -o pipefail
  • POSIX sh: 不支持(这是 ksh/Bash 的扩展特性)。

适用场景

任何涉及数据流转的自动化任务,特别是数据库备份、CI/CD 构建流水线或日志处理。

示例 1:数据库备份的隐患

这是最典型的翻车现场。如果数据库密码错误,导出失败,但压缩命令是成功的,你会得到一个 0 字节的压缩包,且脚本显示“成功”。

# 默认模式:mysqldump 失败,但 gzip 成功,最终 $? 为 0
mysqldump -u root db_name | gzip > backup.sql.gz# 开启保护
set -o pipefail
# 此时只要 mysqldump 报错,整个管道就会返回非零状态
# 结合 set -e 使用,脚本会立即停止,避免后续误操作
mysqldump -u root db_name | gzip > backup.sql.gz

示例 2:不丢失的构建状态

我们常把构建日志同时输出到文件和屏幕。如果不加 pipefail,编译失败了 CI 却可能显示 Pass。

set -o pipefail# 如果 ./build_script.sh 失败
# 即使 tee 命令成功写入了日志,整行命令也会返回失败码
./build_script.sh | tee build.log
http://www.jsqmd.com/news/118965/

相关文章:

  • 12.3 LoRA模型实战(一):快速上手图像风格定制
  • CF1810G The Maximum Prefix
  • Excalidraw与Keda弹性伸缩策略图解
  • 【深度拆解智能体技术底层逻辑】从架构到实现的完整解析
  • 还在手动配置Open-AutoGLM?掌握这7步自动化协作方案秒变专家
  • 高并发场景下等待时间失控?Open-AutoGLM动态调节机制来了,稳了!
  • 还在手动收集表情包?Open-AutoGLM智能采集系统让你领先同行3年
  • 从混乱到统一:Open-AutoGLM团队共享方案如何缩短80%协作成本
  • Verl 如何增加配置参数?
  • FCKEditor教学案例Word图片粘贴转存经验交流
  • 掌握这4个技巧,轻松实现Open-AutoGLM无缝版本切换
  • Excalidraw图形版本对比功能设想
  • Excalidraw与Nuxt.js服务端渲染适配
  • Excalidraw图形水印添加方法
  • Open-AutoGLM视频号推荐引擎解析(稀缺算法模型首次公开)
  • 2025年权威盘点:国内十大四通球阀制造厂家排行榜,行业内四通球阀有哪些优选实力品牌 - 品牌推荐师
  • Excalidraw支持网络拓扑自动发现
  • 2025年北京家庭搬家公司联系方式汇总: 核心城区专业服务商联系通道与高效搬迁指引 - 十大品牌推荐
  • Open-AutoGLM如何颠覆内容创作?:3步打造高转化朋友圈文案的AI秘技
  • 为什么顶级公司都在用Open-AutoGLM做智能回复?真相令人震惊
  • 2025年深圳小型搬家公司联系方式汇总: 本地资深企业官方联系方式与一站式搬迁指南 - 十大品牌推荐
  • Excalidraw支持二维码嵌入生成
  • 【Open-AutoGLM高效运维必修课】:从入门到精通的5个核心步骤
  • not every Es know geography/map
  • not every Es know geography/map
  • 2025年杭州管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 十大品牌推荐
  • Excalidraw与Alfred快捷启动联动
  • 2025年杭州管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 十大品牌推荐
  • 2025年目前头部智能货架批发厂家推荐榜单,轻型货架/可调节货架/穿梭式货架/牛脚式货架/托盘货架/货架/智能货架生产厂家怎么选择 - 品牌推荐师
  • 2025年成都管道疏通联系方式汇总:全市专业服务机构官方联系方式与高效合作指引 - 十大品牌推荐