在写 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)之后就会退出,不会执行接下去的脚本。