首页 > 解决方案 > 在循环条件下同时 Grep 和打印到标准输出

问题描述

我每 60 秒运行一次测试,直到它失败。它工作正常,但我想同时打印“npm test”的输出。

until npm test | grep -m 1 "fail"; do sleep 60 ; done && say fail

我尝试在下一个命令中使用 tee ,但它只运行一次循环:

until npm test | tee >(grep -m 1 "fail"); do sleep 60 ; done && say fail

我正在使用 OS X。

标签: bashshellunix

解决方案


你可以试试

until npm test | tee /dev/stderr | grep -m 1 "fail"; do sleep 60 ; done && say fail

npm test 的输出是 tee'd 到 stderr。所以相同的文本会发送到 stdout 和 stderr。标准输出由 grep 处理,标准错误输出到终端。


推荐阅读