我已经搜索过并找到了解决方案这里,但没有返回状态码部分。
正如您所看到的,它使用子 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 中是不可见的。我如何修改它以满足我的需要?