将输出重定向到 stdall.log、stderr.log 和 stdoutput.log + 返回状态代码

将输出重定向到 stdall.log、stderr.log 和 stdoutput.log + 返回状态代码

我已经搜索过并找到了解决方案这里,但没有返回状态码部分。

正如您所看到的,它使用子 shell,我无法从那里获取状态代码,因此根据这个答案,我想写这样的内容:

(((cmd; status=$?) | tee stdout.log) 3>&1 1>&2 2>&3 | tee stderr.log) &> all.log
if [ $status -ne 0 ]
then
  # do something with stderr.log and stdall.log
fi

当然,在我的示例中,$status在父 shell 中是不可见的。我如何修改它以满足我的需要?

相关内容