Use substituição de processos com &
redirecionamento e exec
:
exec &> >(tee -a "$log_file")
echo This will be logged to the file and to the screen
$log_file
conterá a saída do script e de quaisquer subprocessos, e a saída também será impressa na tela.
>(...)
inicia o processo ...
e retorna um arquivo que representa sua entrada padrão. exec &> ...
redireciona a saída padrão e o erro padrão para ...
para o restante do script (use apenas exec > ...
apenas para stdout). tee -a
acrescenta sua entrada padrão ao arquivo e também o imprime na tela.