Exit when Command Fail

Bash

在写 CI 脚本的时候,希望可以在脚本执行失败之后终止后续的所有操作。比如:

echo "start"
yarn test
echo "end"

如果 yarn test 这个命令失败了,希望不执行 echo "end" 语句。然而通过执行上面的代码,会发现默认是执行的。如果希望不执行这个操作,有几种思路:

第一种,是用 && 将语句串联起来,比如:

echo "start" && yarn test && echo "end"

这样的方案,缺点是比较的麻烦。一旦东西比较多,就很难保证代码的可读性了。

第二种方案,是使用 set -e,脚本改为:

set -e
echo "start"
yarn test
echo "end"

如此一来,脚本在语句执行失败(Exit Code 不是 0)之后就会退出,不会执行接下去的脚本。

参考文档