我有以下 5 秒计时器,它每秒打印一个星号。
timer () {
i=1
trap 'i=5' INT
while [[ $i -le 5 ]]; do
sleep 1
printf "*"
((i+=1))
done
}
不知何故,陷阱块似乎有点骇人听闻,我想知道是否有更正确的方法来中断整个循环(不仅仅是当前的睡眠周期)。我试过了:
trap 'print "foo"' INT
在函数内部和外部的不同位置,但正如我之前提到的,这只会中断当前的睡眠周期。