set¶
参考:
set命令可以辅助脚本运行
环境变量¶
在命令行直接输入set,将输出所有的环境变量和shell函数
set -eux¶
-e:若命令返回值不等于0,则立即退出-u:执行时使用到未定义过的变量时,显示错误信息并停止运行-x:先输出命令,再输出其运行结果
set -e不适用于管道命令
管道命令指的是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了
可通过set -o pipefail解决此问题,-o pipefail的作用是一个子命令失败,整个管道命令就失败
小结¶
在每次shell脚本的开头加入以下set语句
set -eux
set -o pipefail
有助于脚本的调试和实现
对于无法编辑的脚本,可通过命令行传入set命令
$ bash -euxo pipfail script.sh