【发布时间】:2019-10-26 20:17:01
【问题描述】:
在几个示例中,我可以看到 tee 不会等待 stdout 完成,这会导致一些错误行为。
第一个例子:seq 50000|tee >(wc) >(head -2) >/dev/null
将输出:
1
2
12773 12774 65536
而不是
1
2
50000 50000 288894
第二个例子:cat f.txt|grep abc|tee f.txt >/dev/null
在此示例中,文件更新将起作用,仅当文件是短文件时,但如果文件是长文件,有时 tee 会在 cat 完成之前开始写入,并且文件更新将仅对第一个 'cat' 起作用过渡。
您可以说 tee 仅用于重定向到文件,但我也看到了 tee 的这些用法。
我知道 pee 命令没有这个错误,但有人知道让 tee 等待的解决方法吗?
谢谢:-)
【问题讨论】:
-
second example- 如何同时读取和写入同一个文件?我不明白第二个例子是关于什么的。你有什么问题? -
对于第二个示例 - 我认为我可以将文件作为第一步,进行一些文本操作,然后才将其重定向回文件......我要求一种延迟的方法管道的输出...感谢您的出色回答!