Когда я завершаю "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
(если вы не перенаправили стандартный вывод ошибок во время выполнения скрипта, это должно помочь).