shell脚本开头的set -o pipefail是什么意思?
set -o pipefail
n8ghc7c11#
man bash表示管道故障如果设置,管道的返回值是以非零状态退出的最后一个(最右边)命令的值,如果管道中的所有命令都成功退出,则返回值为零。默认情况下禁用此选项。“管道”在哪里
man bash
command1 | command2 | command3
如果没有pipefail,管道的返回值是管道中最后一个命令的退出状态,而不管前面的命令是否失败。示例:
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
1条答案
按热度按时间n8ghc7c11#
man bash
表示管道故障
如果设置,管道的返回值是以非零状态退出的最后一个(最右边)命令的值,如果管道中的所有命令都成功退出,则返回值为零。默认情况下禁用此选项。
“管道”在哪里
如果没有
pipefail
,管道的返回值是管道中最后一个命令的退出状态,而不管前面的命令是否失败。示例: