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

Shell Daily 2025-12-22: 变量安全检查 (Set Nounset)

Shell Daily 2025-12-22: 变量安全检查 (Set Nounset)

Shell 脚本最可怕的噩梦是什么?大概就是那句传说中的 rm -rf "$APP_DIR/"。如果因为逻辑错误,$APP_DIR 变量恰好是空的,这行命令就会变成 rm -rf /,瞬间摧毁整个系统。

为了避免这种“变量未定义”导致的灾难,我们需要开启 Shell 的严格模式之一:nounset

怎么用

在脚本顶部加入:
set -uset -o nounset

开启后,一旦脚本尝试使用一个未定义的变量,Shell 不会像默认那样把它替换为空字符串,而是直接报错并终止运行

  • 兼容性POSIX 通用标准。Bash, Zsh, Dash 等均支持。

适用场景

所有的生产环境脚本。特别涉及文件删除、数据库操作或路径拼接时,它能充当“编译器”,帮你提前揪出拼写错误和逻辑漏洞。

示例 1:揪出隐蔽的拼写错误

在长脚本中,变量名手滑写错是常事。默认情况下,Shell 会静默执行,导致结果怪异。

#!/bin/bash
set -uTARGET_DIR="/var/www/html"# 手滑把 TARGET 拼成了 TAGRET
# 如果不加 set -u,这里会静默创建 /backup 目录,导致逻辑错误
# 加了 set -u,脚本会报错:TARGET_DIR: unbound variable
cp -r "$TAGRET_DIR" /backup/

示例 2:防止根目录被删

这是 set -u 的高光时刻。

#!/bin/bash
set -u# 假设由于上游逻辑错误,CLEAN_PATH 没被赋值
# CLEAN_PATH="/tmp/cache" echo "Cleaning up..."
# 触发报错,脚本立即停止,保护了系统
rm -rf "$CLEAN_PATH/"*

(注:如果你开启了 set -u,但某些变量确实可能是空的(可选参数),请配合我们之前讲过的 ${VAR:-default} 语法使用,例如 ${OPTIONAL_VAR:-},这样就不会报错了。)

http://www.jsqmd.com/news/123415/

相关文章:

  • Open-AutoGLM医疗辅助落地实践(挂号效率提升90%的秘诀)
  • Kubernetes Operator 模式与云原生数据库的联系
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 2025南阳短视频制作公司TOP5权威推荐:短视频推广怎么做? - 工业推荐榜
  • 工业数据孤岛怎么破?Open-AutoGLM模型融合技术让多源数据实时协同
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • 国产检漏仪实力厂家盘点:广东中量科技领跑行业创新 - 品牌推荐大师
  • 大学生必备7款AI写论文神器:真实参考文献+查重低原创高
  • 程序员能做的最好的副业是什么?
  • 2025四川最新磨料磨具OEM定制品牌TOP5 评测!成都等地区优质企业权威榜单发布,技术赋能重构工业研磨生态 - 全局中转站
  • 盘点25年国产离心机优质供应商/企业,美瑞克源头厂家值得推荐 - 品牌推荐大师
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 2025大模型开发必学:4大AI Agent协作框架全解析,从单智能体到团队协作的进化指南
  • 云南昆明旅拍婚纱照优选|丽江七七旅拍咨询直达看这篇 - charlieruizvin
  • 2025年不容错过:武昌高分口石定制厂家联系电话榜单,江夏分口石聚焦技术实力与行业适配性 - 品牌推荐师
  • 2026 小程序开发公司排名:十大优质平台,精准匹配不同企业需求 - 资讯焦点
  • 仅限内部流传的Open-AutoGLM流程修复技巧,现在公开3个核心步骤
  • 最近在折腾变频器控制,发现SVPWM配合PI调节这组合真是经典永流传。今天就跟大伙唠唠实际实现中的那些门道,手头正好有些仿真和代码能拿出来掰扯
  • 权威发布|2025-2026北京朝阳区遗嘱咨询律师事务所排名:专业评测与靠谱机构推荐 - 苏木2025
  • Open-AutoGLM如何重塑元宇宙场景?:5大关键技术解析与性能实测数据曝光
  • 【独家深度】Open-AutoGLM与AppDynamics集成差异:4个被忽视的关键性能指标
  • 2025年氯化钙阻化剂制造企业权威推荐榜单:卤盐类阻化剂/煤矿阻化剂/高分子阻化剂生产厂家精选 - 品牌推荐官
  • 基于Web的skc分类管理系统
  • 【限时公开】Open-AutoGLM请假系统权限配置与流程启动完全教程
  • C#如何利用代码示例实现.NET Core大文件上传的解决方案分享?
  • 2025四川最新切割打磨抛光一站式解决方案品牌top5推荐!成都等地区优质企业权威榜单发布,赋能工业制造高效加工 - 全局中转站
  • 2025工业机柜空调厂家实力榜:六家国产技术先锋深度解析,无冷凝水与智能恒湿技术领跑行业 - 品牌企业推荐师(官方)
  • 【Open-AutoGLM工业优化实战】:3大核心场景揭秘企业效率提升50%的底层逻辑
  • 为什么顶级团队都在转向Open-AutoGLM?多模态理解新范式来了!
  • 2026 小程序模板开发哪家最划算?10 家实测性价比排行 - 资讯焦点