一位同事正在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上运行。
为什么?
(特别是对截断问题的解决方案不感兴趣,但解释了为什么不同类型的操作系统的行为不同。)
答案 0 :(得分:1)
tee
打开其写入的参数,在过程中截断它们,但是head
或tee
是否首先打开文件是偶然的。这两种行为都是有效的;你不应该依赖这个迷你剧本来做任何有用的事情。