我想做一些像运行过程的日志分析器。让我们说我运行一个服务器,stdout通过管道传递给bash脚本,其中是IF语句。如果字符串" somethings"出现在输出中,然后脚本杀死服务器。如果没有,则通常打印标准输出并仍在运行。
示例:
./server | if.bash
if.bash的内容:
if grep 'somethings'; then
kill app
else
echo server output
fi
上面的代码成功运行了测试,但没有打印原始标准输出。如何确保仍然打印内容?
答案 0 :(得分:2)
循环读取输出:
while read -r line; do
if [[ $line =~ something ]];
then
kill app
break
else
printf "%s\n" "$line"
fi
done
另一个选择是在运行脚本时使用tee
:
./server | tee /dev/tty | if.bash
tee
将在终端上输出消息并将它们发送到管道。