3

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

以下在 BSD/OS X 上运行良好(输出为“12”)但在 Linux 上运行良好(输出为空):

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

更改head | tee要在子外壳中运行的部件

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

使它也可以在 Linux 上运行。

为什么?

(特别对截断问题的解决方案不感兴趣,而是解释为什么在不同风格的操作系统上行为不同。)

4

1 回答 1

1

tee打开它的写入参数,在这个过程中截断它们,但是是否headtee打开文件是由机会决定的。任何一种行为都是有效的;你不应该依赖这个迷你脚本做任何有用的事情。

于 2011-03-04T10:54:33.967 回答