当我需要抑制某种输出时,例如
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 标准的版本。)