毎秒アスタリスクを出力する次の5秒タイマーがあります。
timer () {
i=1
trap 'i=5' INT
while [[ $i -le 5 ]]; do
sleep 1
printf "*"
((i+=1))
done
}
どういうわけか、トラップ チャンクは少しハックに見えます。現在のスリープ サイクルだけでなく、ループ全体を中断するより正しい方法があるのではないかと思います。私はもう試した:
trap 'print "foo"' INT
関数の内外のさまざまな場所にありますが、前に触れたように、それは現在のスリープ サイクルを中断するだけです。