trap echo imprime e não grava no console ao gravar no arquivo

trap echo imprime e não grava no console ao gravar no arquivo

Quando eu encerro "CTRL+C" o seguinte script

#!/bin/bash
function waa(){
    for i in {1..10}
    do
      echo "start.sh: sleeping $i"
      sleep 1s
    done
}

trap "echo 'GAGA'" TERM

waa >> log.txt

o eco da armadilha "GAGA" vai para log.txt? Por que esse comportamento é assim? Muito pouco intuitivo?

Obrigado!

Responder1

Você redirecionou a saída padrão de waato log.txte acionou trapenquanto o script estava em execução waa. O echoé executado nesse contexto.

Se você quiser que o eco vá para oconsole, você pode tentar redirecioná-lo para o erro padrão, por exemplo,

trap "echo 'GAGA' >&2 " TERM

(a menos que você tenha redirecionado o erro padrão ao executar o script, isso deve ajudar).

informação relacionada