我有以下 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 中。如果您只想将返回代码添加到输出中,请将 替换exit
为echo
.