shell scriptで pause() したいなーと思うケースがたまにあるんですけど、すっきりした答えを見たことがなかったのでメモ。
pause() {
trap true 1 2 3 15
sleep infinity&
wait $!
}
# [なんかする]
pause
# [後処理]
これでいけそう。
trapは待ち受けたいsignalを羅列しないといけないんですが、特殊用途でなければこれでよいでしょう。
sleepコマンドは実行中はsignalで止まらないので、勢い
while true; do sleep 1; done
みたいになってしまいがちですが、定期的になんか動いてるのがダサいし処理粒度が1秒なのもダサい。
なのでバックグラウンドにしてwaitで待つことにすればゼロ負荷でsignal待ちできます。