使用tee进行文件就地编辑在不同的unix上表现不同

时间:2011-03-04 10:45:20

标签: linux bash shell unix tee

一位同事正在bash shell脚本中试验文件截断:从二进制文件中提取两个第一个字节。

以下在BSD / OS X上工作正常(输出中为“12”)但在Linux上没有(输出为空):

echo 1234 >test
head -c2 test | tee test >/dev/null

更改head | tee部分以在子shell中运行

echo 1234 >test
(head -c2 test | tee test >/dev/null)

也使它在Linux上运行。

为什么?

(特别是对截断问题的解决方案不感兴趣,但解释了为什么不同类型的操作系统的行为不同。)

1 个答案:

答案 0 :(得分:1)

tee打开其写入的参数,在过程中截断它们,但是headtee是否首先打开文件是偶然的。这两种行为都是有效的;你不应该依赖这个迷你剧本来做任何有用的事情。