Сотрудник экспериментировал с усечением файла в сценарии оболочки bash: извлечь два первых байта из двоичного файла.
Следующее работало нормально на 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.
Почему?
(Специально не заинтересован в решениях проблемы усечения, но объясняет, почему поведение отличается в разных версиях операционных систем.)