bash - 在循环条件下同时 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。
解决方案
你可以试试
until npm test | tee /dev/stderr | grep -m 1 "fail"; do sleep 60 ; done && say fail
npm test 的输出是 tee'd 到 stderr。所以相同的文本会发送到 stdout 和 stderr。标准输出由 grep 处理,标准错误输出到终端。
推荐阅读
- android - 网站无法在 Android 手机上滚动
- ms-access - 表单上的按钮看起来像是在被点击后一直被按下
- mongodb - Mongodb WT_ERROR:非特定的 WiredTiger 错误,
- amazon-web-services - 有什么理由在 MessageBody 中使用 json 字符串而不是单个属性?
- google-bigquery - 3 表连接SQL大查询
- typescript - 打字稿:'string []'类型的参数不能分配给'(“a”|“b”|“c”)[]'类型的参数
- java - 检查下拉列表中的排序顺序 - 建议使用 selenium/java 的最佳方法
- laravel - 在 Vue 模板中包含文件的内容而不使用子组件
- python - 如何将 tar.gz githubfile 添加到 setup.py
- swift - 嵌套在函数中的快速结构