
🎯 适合:开始写自动化脚本、但还没被坑够的人
写脚本这件事,最容易让人上头。一段几十行的小脚本,把原来手动十分钟的活儿压缩到一秒钟,那种爽感会让你想把一切都自动化。
但自动化是一把双刃剑——手动操作错了,错一次;脚本错了,它会以光速把错误重复一千次。 这几个坑,我都是真金白银踩过来的,写出来给你提个醒。
一、删除操作,永远先预览
这是最血的教训。脚本里一个 rm -rf,路径变量没取到值,就成了删根目录。
我现在写任何带删除的脚本,都强制两条铁律:
- ✅ 默认先跑"预览模式",只打印要删什么,不真删
- ✅ 真删之前,逐条确认存在性,拒绝删根目录这种危险路径
- ❌ 绝对不在一条命令里用
&&串起一堆强制删除
💡 小贴士:能用"移到回收站"就别用"永久删除"。给自己留一条后悔的路。
二、别相信"它应该能取到值"
脚本里最阴险的 bug,往往是变量为空。
你以为某个变量一定有值,结果在某个边界情况下它是空的,于是 cd $DIR 变成了 cd(回到家目录),rm $FILE 变成了删一片。
- ✅ 关键变量取值后,先判断空不空再往下走
- ✅ 给变量加上引号
"$VAR",防止路径里有空格出幺蛾子 - 💡 养成习惯:脚本开头写
set -u,用到未定义变量直接报错退出,比默默出错强
三、非交互环境会让你措手不及
脚本在你手动跑的时候一切正常,挂到后台定时任务里就崩了。
很常见的原因是:脚本里有个"等用户按 Y 确认"的地方。你手动跑时按一下就过,但定时任务没有键盘,它读不到输入,直接抛错崩溃。
- ✅ 给脚本设计
--yes这类参数,自动化场景跳过确认 - ✅ 但跳过确认的前提,是前面的安全检查已经足够严
四、重要的操作,留下日志
脚本默默跑完,出了问题你两眼一抹黑,根本不知道它干了啥。
我现在的习惯是:凡是会改动数据的脚本,都往一个日志文件里记一笔——什么时间、动了什么、成功还是失败。出事的时候,这份日志就是救命的线索。
写在最后
写脚本的核心心态,应该是"假设它一定会在最糟的时候出错",然后提前把安全网铺好。
预览模式、空值检查、操作日志、可回滚——这些东西写的时候觉得啰嗦,真出事的时候,每一条都是在救你的命。
自动化的爽,建立在"它不会帮你把错误也自动化"的前提上。
💡 小贴士:新写的脚本,先拿一份测试数据的副本跑,确认没问题再对真实数据动手。这一步能拦下九成的事故。
原创
写自动化脚本,这几个坑我替你踩过了
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法