🎯 适合:开始写自动化脚本、但还没被坑够的人

写脚本这件事,最容易让人上头。一段几十行的小脚本,把原来手动十分钟的活儿压缩到一秒钟,那种爽感会让你想把一切都自动化。

但自动化是一把双刃剑——手动操作错了,错一次;脚本错了,它会以光速把错误重复一千次。 这几个坑,我都是真金白银踩过来的,写出来给你提个醒。

一、删除操作,永远先预览

这是最血的教训。脚本里一个 rm -rf,路径变量没取到值,就成了删根目录。

我现在写任何带删除的脚本,都强制两条铁律:

  • ✅ 默认先跑"预览模式",只打印要删什么,不真删
  • ✅ 真删之前,逐条确认存在性,拒绝删根目录这种危险路径
  • ❌ 绝对不在一条命令里用 && 串起一堆强制删除

💡 小贴士:能用"移到回收站"就别用"永久删除"。给自己留一条后悔的路。

二、别相信"它应该能取到值"

脚本里最阴险的 bug,往往是变量为空。

你以为某个变量一定有值,结果在某个边界情况下它是空的,于是 cd $DIR 变成了 cd(回到家目录),rm $FILE 变成了删一片。

  • ✅ 关键变量取值后,先判断空不空再往下走
  • ✅ 给变量加上引号 "$VAR",防止路径里有空格出幺蛾子
  • 💡 养成习惯:脚本开头写 set -u,用到未定义变量直接报错退出,比默默出错强

三、非交互环境会让你措手不及

脚本在你手动跑的时候一切正常,挂到后台定时任务里就崩了。

很常见的原因是:脚本里有个"等用户按 Y 确认"的地方。你手动跑时按一下就过,但定时任务没有键盘,它读不到输入,直接抛错崩溃。

  • ✅ 给脚本设计 --yes 这类参数,自动化场景跳过确认
  • ✅ 但跳过确认的前提,是前面的安全检查已经足够严

四、重要的操作,留下日志

脚本默默跑完,出了问题你两眼一抹黑,根本不知道它干了啥。

我现在的习惯是:凡是会改动数据的脚本,都往一个日志文件里记一笔——什么时间、动了什么、成功还是失败。出事的时候,这份日志就是救命的线索。

写在最后

写脚本的核心心态,应该是"假设它一定会在最糟的时候出错",然后提前把安全网铺好。

预览模式、空值检查、操作日志、可回滚——这些东西写的时候觉得啰嗦,真出事的时候,每一条都是在救你的命。

自动化的爽,建立在"它不会帮你把错误也自动化"的前提上。

💡 小贴士:新写的脚本,先拿一份测试数据的副本跑,确认没问题再对真实数据动手。这一步能拦下九成的事故。