shell Bash脚本中set -o pipefail的含义是什么?

bfhwhh0e  于 2023-01-05  发布在  Shell
关注(0)|答案(1)|浏览(223)

shell脚本开头的set -o pipefail是什么意思?

n8ghc7c1

n8ghc7c11#

man bash表示
管道故障
如果设置,管道的返回值是以非零状态退出的最后一个(最右边)命令的值,如果管道中的所有命令都成功退出,则返回值为零。默认情况下禁用此选项。
“管道”在哪里

command1 | command2 | command3

如果没有pipefail,管道的返回值是管道中最后一个命令的退出状态,而不管前面的命令是否失败。
示例:

$ grep ^root /etc/passwd | cut -f 5 -d :
System Administrator
$ echo $?
0
$ grep ^nonexistant_user /etc/passwd | cut -f 5 -d :
$ echo $?
0
$ set -o pipefail
$ grep ^nonexistant_user /etc/passwd | cut -f 5 -d :
$ echo $?
1

相关问题