「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.txt
、trap
スクリプトの実行中にをトリガーしましたwaa
。 はecho
そのコンテキストで実行されます。
エコーをコンソールそれを標準エラーにリダイレクトしてみるといいでしょう。例えば、
trap "echo 'GAGA' >&2 " TERM
(スクリプトの実行中に標準エラーをリダイレクトしていない限り、これは役立つはずです)。