Linux中脚本实现倒计时【两种方法:算术法和显示法】

脚本目的:

调用脚本,实现倒计时,只给定需要计时的时间【总秒数】

题目例如:写一个脚本,可以实现任意秒数的倒计时。

思路解析:

1.倒计时有两部分:分钟和秒钟,所以我们需要对分钟和秒钟分别倒计时
2.当分钟和秒钟都不为0时:分钟是跟随秒钟变化的,分和秒又都可以随着总秒数的变化而变化。
3.显示出每一秒钟的倒计时。

脚 本 写 法 不 唯 一 , 根 据 分 秒 变 化 的 关 系 , 可 以 有 多 种 写 法 \color{blue}{脚本写法不唯一,根据分秒变化的关系,可以有多种写法}

脚本内容:脚本一:

#!/bin/bash
for ((i= 1 ; i > = 0 ; i − − ) ) d o i f [ " 1;i>=0;i--)) do if [ " 1;i>=0;i))doif["i" = “0” ]
then
echo "Time is over. "
exit
fi
((Minute=$i/60))
((Second=$i%60))
echo “$Minute : $Second”
sleep 1
# clear ###clear清屏,使倒计时始终显示在第一行。可以不写。
done

#!/bin/bash
for ((i=$1;i>=0;i--))
do
        if [ "$i" = "0" ]
        then
                echo "Time is over. "
                exit
        fi
        ((Minute=$i/60))
        ((Second=$i%60))
        echo "$Minute : $Second"
        sleep 1
done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

脚本二:

在这里插入图片描述

在这里插入图片描述

#!/bin/bash
echo "Please input the time you what: "
read -p "First,the minute:please input a number:" MINUTE
read -p "Then,the second:please input a second(0-60):" SECOND
echo -e ""$MINUTE":"$SECOND"\nPlease wait 3 second "
sleep 3
((MAX="$MINUTE*60"+"$SECOND"))
for ((i="$MAX";i>=0;i--))
do
        if [ "$i" = "0" ]
        then
                echo "Time is over. "
                exit
        fi
        ((Min=$i/60))
        ((Sec=$i%60))
        echo "$Min : $Sec"
        sleep 1
done

注意:

clear清屏,是将本屏幕大小的shell界面移动上去,让下方空白的界面被我们使用,当用clear后,虽然倒计时一直显示在了屏幕最上方,但是却造成了很多空白shell界面的浪费。

由于输出是将结果直接显示在了屏幕上,清屏也可以使用reset,不过不建议使用,速度较慢。

如果是指定了倒计时时间,不需要有手动输入时间的话,将for循环中的$1直接换为指定的值即可


以上部分写于早期,补充显示法,以及显示时一直保持在同一行其他方法:

#!/bin/bash
read -p "please input time like[5:3]:" TIME
minute=`echo $TIME | awk -F : '{print $1}'`
second=`echo $TIME | awk -F : '{print $2}'`

echo "After 3 second , the game will begin."


for i in 3 2 1
do
        echo $i
        sleep 1
done
echo "-------------------------"

while (( $minute >=0 ))
do
        if [ $second = 0 ]&&[ $minute = 0 ]
        then
                echo "time over!!"
                exit
        elif (( $second >= 0 ))
        then
                echo $minute:$second | tr "\n" "\r"
                (( second-- ))
                sleep 1
        elif (( $second<0 ))
        then
                (( minute-- ))
                (( second=59 ))
        fi
done

在这里插入图片描述
在这里插入图片描述


                            大大的小小阳
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值