问题描述
我正在编写一个记录器来捕获脚本的输出,并在前一个程序失败或成功时以不同的方式处理该输出:
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
被删除。