set指令非常有用,常见参数意义如下:
- -x。在bash中输出所执行的指令,常用于调试
- -e。常用于脚本,当脚本中某个指令返回不为0时,视为失败,退出脚本,不执行后续指令。在不设置-e参数时,系统默认会继续执行指令
- -o errexit。等同于-e
- set -o pipefail。常用于pipeline,当子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行。pipefail参数设置后,只要一个子命令失败,整个管道命令就失败。如果结合-e参数,整个bash脚本停止执行
- -u。当执行脚本的时候,如果遇到不存在的变量,bash视为错误并退出。不设置-u的情况下,bash会忽略该变量,继续执行
- -o vi。我比较喜欢的参数,把命令行当vi使用
帮助文档:
help set man bash
发表回复