Shell 脚本默认容错性强(出错继续执行),这在自动化场景反而是隐患。用 set 命令可以让脚本更严格、更易调试。

一、问题:默认行为不安全

下面这段,如果 cd 失败,rm 仍会执行,可能误删:

cd /some/dir
rm *.tmp        # 若 cd 失败,会在当前目录误删!

二、set -e:遇错即停

#!/bin/bash
set -e             # 任何命令返回非零立即退出
cd /some/dir      # 失败则脚本终止
rm *.tmp
set -e 是写健壮脚本的第一步:错误能被及时发现,而不是被悄悄忽略导致连锁问题。

三、set -x:打印执行的命令

set -x             # 打印每条命令(前面带 + 号)

调试时极有用,能看到脚本到底执行了什么、变量展开成什么。

四、组合:set -euxo pipefail

生产脚本推荐的"黄金开头":

#!/bin/bash
set -euo pipefail

五、调试技巧

六、安全检查清单

七、小结

一个 set -euo pipefail 能让 Shell 脚本的健壮性大幅提升。写脚本时养成这个习惯,能省去大量调试时间。