ファイルに書き込むときにトラップエコーがコンソールに出力されずに出力される

ファイルに書き込むときにトラップエコーがコンソールに出力されずに出力される

「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

トラップエコー「GAGA」は log.txt に出力されますか? なぜこのような動作になるのでしょうか? 非常に直感的ではありませんか?

ありがとう!

答え1

の標準出力をwaaにリダイレクトしlog.txttrapスクリプトの実行中にをトリガーしましたwaa。 はechoそのコンテキストで実行されます。

エコーをコンソールそれを標準エラーにリダイレクトしてみるといいでしょう。例えば、

trap "echo 'GAGA' >&2 " TERM

(スクリプトの実行中に標準エラーをリダイレクトしていない限り、これは役立つはずです)。

関連情報