谷歌参考了倒计时时间,我正在尝试不同的输出。即显示剩余的秒数:20。每次倒计时达到10时,倒计时为90,80,70,60,50,40,30,30,10。使用clear in while循环给出了很多例子,但是我不想在显示倒计时时清除我的脚本其他输出。
我想知道我犯了哪个错误。
function countdown ()
{
if (($# != 1)) || [[ $1 = *[![:digit:]]* ]]; then
echo "Usage: countdown seconds";
return;
fi;
local t=$1 remaining=$1;
SECONDS=0;
while sleep .2; do
printf '\rseconds remaining to proceed: '"$remaining";
if (( (remaining=t-SECONDS) <=0 )); then
printf '\rseconds remaining to proceed' 0;
break;
fi;
done
}
答案 0 :(得分:7)
问题在于它实际上倒计时了9,8,7,6等,但是你从未从10中删除过去的0,所以它会停留在屏幕上。轻松修复:
printf '\rseconds remaining to proceed: '"$remaining"' ';
添加一个空格以从屏幕上击中0并且你们都很好。