Todo tee
abre b.out
sozinho e sobrescreve sozinho. No final você verá b.out
do último tee
apenas (observe que isso é independente do exec
anterior, então o título original da pergunta " tee
inside exec
, comportamento de redirecionamento aleatório" foi bastante enganador) .
Se você examinou b.out
entre tee
-s, perceberá que ele contém a saída dotee
anterior apenas. Você pode fazer isso digitando seus comandos um a um (sem redirecionar para a.out
) e invocando cat b.out
após cada.
O redirecionamento para a.out
é um pouco diferente. Quando você exec
, a.out
é aberto pelo shell apenas uma vez e tudo que é redirecionado para ele é anexado.
Solução: use tee -a
. De man tee
:
-a
,--append
append to the given FILEs, do not overwrite