请看下面的命令:
bash -c "echo x; cat 1" | tee 1
。
我的理解是,它将分叉到新的shell,写入x
stdout,写入file 1 not found
stderr,退出并将控制权返回给父进程,以及写入x
stdout和1
。因此,我希望最终输出为x
,并且该文件1
正好包含string x
。
然而,这种情况并非如此。实际上,文件1
通常包含的至少两个实例x
,有时包含数千行x
。在运行命令一万次的批处理测试中,x
写入文件的s 的平均数为52.3,中位数为1。什么概率分布可以模拟这种行为?我怀疑它是有条件的几何形状,否则是统一的。
根据此处的有限测试,
—
雷南'18
x
写入文件的s 的平均数量为4.35。我想这将在很大程度上取决于机器负载。
tee
在打开文件进行cat
读取之前已经打开了文件进行写入x
,则文件中可能会有很多-es。在这种情况下,只要cat
读取速度快于tee
写入速度,“循环”就会结束,到达文件末尾。