【问题标题】:grep, tee, and sleep not playing nice togethergrep、tee 和 sleep 一起玩不好
【发布时间】:2014-12-04 02:32:02
【问题描述】:
(echo foo && sleep 1 && echo bar) | grep -P . | tee /dev/null

上面的代码是我能想到的最小的问题。预期的行为是 foo 将被回显,一秒钟后,bar 将被回显。

实际发生的是第二次通过,然后foobar 同时被回显。如果您删除 任一 greptee 命令(或两者,显然),正确的行为就会发生。但是和他们在一起就不行了。

我认为这是某种缓冲问题,但我不知道如何解决。这对我来说发生的实际脚本运行了很长一段时间,直到最后我都没有看到任何日志消息。哈! :(

【问题讨论】:

标签: bash grep tee


【解决方案1】:

Etan 的评论提示我查看 grep 的手册页,我找到了 --line-buffered 标志。添加解决了问题

(echo foo && sleep 1 && echo bar) | grep --line-buffered -P . | tee /dev/null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多