# set命令
set命令用来修改 Shell 环境的运行参数,也就是可以定制环境。一共有十几个参数可以定制。
如果命令行下不带任何参数,直接运行set,会显示所有的环境变量和 Shell 函数。
# 基本用法
set -u,set -o nounset, 遇到未定义的变量会退出set -x,set -o xtrace, 先输出执行的那一行命令set -e,set -o errexit, 脚本只要发生错误,就终止执行set +e,表示关闭-e选项,可用于暂时关闭,让命令失败的时候继续执行set -o pipefailset -e不适用于管道命令, 如foo | echo a,即使foo未声明,echo a也会执行;Bash 会把最后一个子命令的返回值,作为整个命令的返回值。只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,
set -e就失效了set -o pipefail用来解决这种情况
# 连在一起使用
# 写法一
set -euxo pipefail
# 写法二
set -eux
set -o pipefail
另一种办法是在执行 Bash 脚本的时候,从命令行传入这些参数。
$ bash -euxo pipefail script.sh