通过管道传递 grep 退出代码

通过管道传递 grep 退出代码

当我需要抑制某种输出时,例如

foo | grep -v bar

但 foo 有时只给出:

bar
bar
bar...

grep 将返回 -1。如何将退出代码 1 转换为 0?

答案1

您可以随时尝试通过其他方式进行管道传输,例如cat,以摆脱 grep 的退出代码 - 尽管这可能比您想要的更大。

答案2

至少在 bash 中,你可以使用

foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)

这会将退出代码 1 更改为 0,并且不会改变其他任何内容。

(可能不符合 POSIX 标准,但可能存在符合 POSIX 标准的版本。)

相关内容