如何解决Bash 管道:获取管道中前一个进程的退出状态
我正在编写一个记录器来捕获脚本的输出,并在前一个程序失败或成功时以不同的方式处理该输出:
program1 | logger.sh
在 logger.sh 中,我计划有如下内容:
while IFS= read -r line; do
CAPTURED_OUTPUT="$CAPTURED_OUTPUT\n$line"
done
if "program1 has Failed"; then
echo "$CAPTURED_OUTPUT"
fi
如何知道在logger.sh中“program1 has Failed”?
注意 program1 是通用的,我无法控制它。
想法:
解决方法
我认为你可以通过这个实现你想要的:
program1 > program1.log || cat program1.log
rm program1.log
那么您根本不需要 logger.sh
。
这会将 stdout
的 program1
重定向到 program1.log
,如果 program1
的退出代码非零,则将打印 program1.log
。之后,program1.log
被删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。