bash: tee come novas linhas após exec

1

Para gerar saída de stdout e stderr de um script para o console e para um arquivo de log, encontrei uma solução bonita com tee:

exec &> >(tee log.file)

O problema é que às vezes o tee parece estar comendo novas linhas. Por exemplo, eu tenho uma armadilha na saída que imprime uma nova linha e só então sai.

trap "echo && exit 55" EXIT HUP INT QUIT KILL

Faz com que o shell imprima o prompt da nova linha, em vez de onde o usuário pode ter pressionado ^C enquanto o script estava sendo executado. E isso não funciona quando há uma chamada para exec.

    
por tijagi 25.02.2016 / 19:17

2 respostas

1

Este método redireciona stderr para stdout, em seguida, pipes para tee. Eu acho que é um pouco mais legível.

exec 2>&1 | tee log.file

Eu testei isso na minha máquina e não encontrei o problema de "nova linha".

    
por 25.02.2016 / 20:17
1

tee está provavelmente sendo morto pelo sinal antes de receber a nova linha.

    
por 25.02.2016 / 20:35