Каждый tee
открывается b.out
самостоятельно и перезаписывает его самостоятельно. В самом конце вы видите только b.out
из последнего tee
(обратите внимание, что это не зависит от предыдущего exec
, поэтому первоначальный заголовок вопроса « tee
внутри exec
, случайное перенаправление» был довольно обманчивым).
Если вы проверите b.out
между tee
-s, вы заметите, что он содержит только выходные данные tee
. Вы можете сделать это, набрав ваши команды одну за другой (без перенаправления на a.out
) и вызывая cat b.out
после каждой.
Перенаправление на a.out
несколько отличается. Когда exec
, a.out
открыто оболочка только один раз, и все, что перенаправляется на это добавляемое.
Решение: использовать tee -a
. От man tee
:
-a
,--append
добавьте к данным файлам, не перезаписывайте