我正在寻找一种替代清晰,或者更好的方法来编写我制作的计时器脚本。基本上,脚本从20分钟开始倒计时,然后再从20分钟重新开始。我想要做的是避免每次调用clear时发生的闪烁终端,即每秒钟。我错过了写这个更好的方法吗?或者我基本上坚持使用清晰的闪烁终端?
totsecs=1200
currsecs=0
while true; do
currsecs=$(($currsecs+1))
min=$((totsecs-currsecs))
min=$((min/60))
sec=$((totsecs-currsecs))
sec=$((sec%60))
printf "%02d:%02d\n" $min $sec
if [ $currsecs -eq $totsecs ]; then
currsecs=0
fi
sleep 1
clear
done
答案 0 :(得分:1)
使用回车符而不是换行符将光标返回到同一行的开头。
while true; do
(( currsecs++ ))
(( min = (totsecs - currsecs) / 60 ))
(( sec = (totsecs - currsecs) % 60 ))
printf "\r%02d:%02d" $min $sec
(( currsecs == totsecs )) && currsecs=0
sleep 1
done