bash : set command

set 命令教程

set 命令用来修改 Shell 环境的运行参数,也就是可以定制环境

介绍常用的参数

1. set -u

执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。

set -u = set -o nounset

2. set -x

默认情况下,脚本执行后,屏幕只显示运行结果,没有其他内容。如果多个命令连续执行,它们的运行结果就会连续输出。有时会分不清,某一段内容是什么命令产生的。

set -x = set -o xtrace

3. set -e

使得脚本只要发生错误,就终止执行。
set -e = set -o errexit

4. set -o pipefail

set -e有一个例外情况,就是不适用于管道命令。

所谓管道命令,就是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了。

1
2
3
4
5
#!/usr/bin/env bash
set -eo pipefail

foo | echo a
echo bar

echo bar没有执行 ,否则在不用 pipefail 的情况下,会继续执行 echo bar

End

set命令的上面这四个参数,一般都放在一起使用。

1
2
3
4
5
6
# 写法一
set -euxo pipefail

# 写法二
set -eux
set -o pipefail

More Ref:

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2024 John Doe
  • Visitors: | Views:

请我喝杯咖啡吧~