ファイルトラップエコーに書き込むと印刷されませんが、コンソールには書き込まれません。

ファイルトラップエコーに書き込むと印刷されませんが、コンソールには書き込まれません。

「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。そのコンテキスト内で実行されます。trapwaaecho

エコを送りたいなら快適、標準エラーにリダイレクトしてみることができます。たとえば、次のようになります。

trap "echo 'GAGA' >&2 " TERM

(スクリプトを実行するときに標準エラーをリダイレクトしない限り、この場合は役立ちます)。

おすすめ記事