set命令的主要作用是设置SHELL的属性, 其语法为set [-abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
或者 set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
,第一组与第二组都是set的选项,+号表示关闭选项,-号表示打开选项,最后一组argument是位置参数。
先对常用的选项进行说明,其它选项的请阅读参考手册。
选项 | 说明 |
---|---|
-x | 在命令执行之前打印命令,检查脚本的时候比较好用 |
-u | shell遇到未设置的变量,会抛出错误而不是忽略 |
-e | 当命令报错,立刻退出脚本,而不是执行后面的命令 |
-o pipefail | 专门针对于管道命令的设置,当管道最右侧命令返回非0时,管道返回非零值;当管道返回0值时,表示管道的所有命令都返回0值 |
set命令的其他特征
- 开启选项之后需要关闭,再运行
set +选项
就可以了。 - set后接的位置参数默认会赋值给环境变量
$1, $2, $3......
,位置参数的数量赋值为$#
。 - set命令不带选项与位置参数时,输出SHELL环境变量与SHELL函数。
- 建议在脚本的头部设置
set -eux ; set -o pipefail
或者,按bash -eux -o pipefail script.sh
方式执行脚本。