unbuffer 命令中的返回值

unbuffer 命令中的返回值

我有以下 bash 代码来捕获构建结果,同时将输出打印到屏幕并提供构建结果的解析。

output=$(unbuffer cmake ... | tee /dev/tty)
parseErrors ${output}

parseErrors 的作用正如它听起来的那样。它会解析输出中任何看起来像错误的内容。我可以在那里退出,但宁愿在函数调用之后退出。如何从传递给 unbuffer 命令的 cmake 构建中获取返回状态?我尝试过使用 PIPESTATUS[0],但我认为这是从 unbuffer 本身返回值。

答案1

假设您想访问cmake两行之后的返回码,您可以这样做

output=$(unbuffer cmake ... | tee /dev/tty; exit "${PIPESTATUS[0]}")
rc=$?
parseErrors ${output}
exit "$rc"

PIPESTATUS 的使用必须在$()子 shell 中。如果您只想将返回代码添加到输出中,请将 替换exitecho.

相关内容