Рассмотрим следующую команду:
bash -c "echo x; cat 1" | tee 1.
Насколько я понимаю, он будет переходить в новую оболочку, писать xв stdout, писать file 1 not foundв stderr, выходить и возвращать управление родительскому процессу, а также писать xв stdout и to 1. Следовательно, я ожидаю, что конечный результат будет x, а файл 1содержит именно строку x.
Однако, это не так. На самом деле файл 1обычно содержит как минимум два экземпляра x, а иногда и тысячи строк xs. При пакетном тесте выполнения команды десять тысяч раз среднее число xs, записанных в файл, составило 52,3, а медиана - 1. Какой механик вызывает это? Какое распределение вероятностей моделирует это поведение? Я подозреваю, что он условно геометрический и в остальном однородный.
xs, записанных в файл, составило 4,35. Я думаю, это будет зависеть от загрузки машины.
teeфайл открыли для записи, прежде чемcatоткрыть его для чтения,xв файле может быть много ключей. В этом случае «цикл» завершается всякий раз, когдаcatчтениеteeвыполняется быстрее, чем запись, достигая конца файла.