Seu script não está falhando - está funcionando muito bem. Seu entendimento está correto em que exec >logfile; exec 2>&1
redireciona a saída padrão e o erro padrão para logfile
. Então, você deve estar procurando no arquivo de log e não no seu terminal por saída e erro. Se você executar esses redirecionamentos diretamente no seu shell atual, parece que o seu shell congelou porque você enviou toda a saída do seu terminal.
Observe que a saída da opção xtrace
( set -x
) também vai para o erro padrão, que é sempre o descritor de arquivo 2 ... que você enviou para o arquivo de log. Você deve encontrar o resto depois do exec 2>&1
.