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.