【发布时间】:2015-08-04 09:42:33
【问题描述】:
我希望能够创建一个 bash 函数,该函数可以在管道之前读取命令的退出代码。我不确定是否可以访问它。
-
echo "1" | grep 2返回 1 状态码 -
echo "1" | grep 1返回 0 状态码
现在我想添加第三个命令来读取状态,用管道:
-
echo "1" | grep 2 | echo $?将回显“0”,即使状态码为 1。
我知道我可以使用echo "1" | grep 2 && echo "0" || echo "1",但我更喜欢使用管道来编写它。
他们是否仍然这样做(如果它可以在大多数 shell 上工作,例如 bash、sh 和 zsh,那就更好了)
【问题讨论】:
-
为什么要使用管道?
echo "1" | grep 2;echo $?可以正常工作。 -
因为我可能还需要来自标准输入的内容。但是,我更喜欢您的解决方案而不是 @mattinbits 的解决方案
-
听起来像是 XY 问题。为什么需要管道内部的状态?
-
就像
tee获取标准输入并将其放入文件并将其传递给下一个命令,我希望能够获得状态并将所有内容传递给下一个命令。这样我就可以做echo "1" | debug | long | command | here,这样我现在就可以调试管道的状态,而不必编写多行(这样可以重复)。这有意义吗? -
当我在 bash 中运行一些命令时,我主要使用
debug函数,所以如果我能在一行中完成,我会更喜欢。