3
(echo foo && sleep 1 && echo bar) | grep -P . | tee /dev/null
上面的代码是我能想出的问题的最小案例。预期的行为是foo
会被echo'd,第二个会通过,然后bar
会被echo'd。grep,tee和睡觉不在一起玩
实际情况是,第二次通过然后foo
和bar
被同时回显。如果删除或者或grep
或tee
命令(或者显然)都会发生正确的行为。但是与他们在一起它不是。
我认为这是某种缓冲问题,但我不知道如何解决它。这段时间里我正在执行的脚本运行了很长一段时间,直到最后才看到任何日志消息。 HALP! :(
可能重复。[bash下力exec'd过程中有缓冲的标准输出] (http://stackoverflow.com/questions/3332045/bash-force-execd-process-to-have-unbuffered-stdout) – 2014-12-04 02:36:37
通过'正确'和'预期',你的意思是'所需'。你看到的行为是无论是正确的还是预期的。 – 2014-12-04 02:43:25
http://mywiki.wooledge.org/BashFAQ/009 – tripleee 2014-12-04 06:53:20