ловушка echo печатает, а не записывает на консоль при записи в файл

ловушка echo печатает, а не записывает на консоль при записи в файл

Когда я завершаю "CTRL+C", следующий скрипт

#!/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

ловушка echo "GAGA" идет в log.txt? Почему такое поведение? Очень неинтуитивно?

Спасибо!

решение1

Вы перенаправили стандартный вывод в waaи log.txtзапустили во trapвремя выполнения скрипта waa. echoВыполняется в этом контексте.

Если вы хотите, чтобы эхо пошло вконсоль, вы можете попробовать перенаправить его в стандартную ошибку, например,

trap "echo 'GAGA' >&2 " TERM

(если вы не перенаправили стандартный вывод ошибок во время выполнения скрипта, это должно помочь).

Связанный контент