linux用脚本实现“时+分+秒”倒计时功能
脚本目的:
调用脚本,实现倒计时,只给定需要计时的时间【总秒数】
题目例如:写一个脚本,可以实现任意秒数的倒计时。
思路解析:
1.倒计时有两部分:分钟和秒钟,所以我们需要对分钟和秒钟分别倒计时
2.当分钟和秒钟都不为0时:分钟是跟随秒钟变化的,分和秒又都可以随着总秒数的变化而变化。
3.显示出每一秒钟的倒计时。
脚
本
写
法
不
唯
一
,
根
据
分
秒
变
化
的
关
系
,
可
以
有
多
种
写
法
脚
本
写
法
不
唯
一
,
根
据
分
秒
变
化
的
关
系
,
可
以
有
多
种
写
法
脚
本
写
法
不
唯
一
,
根
据
分
秒
变
化
的
关
系
,
可
以
有
多
种
写
法
脚本写法不唯一,根据分秒变化的关系,可以有多种写法脚本写法不唯一,根据分秒变化的关系,可以有多种写法 \color{blue}{脚本写法不唯一,根据分秒变化的关系,可以有多种写法}
脚本写法不唯一,根据分秒变化的关系,可以有多种写法脚本写法不唯一,根据分秒变化的关系,可以有多种写法脚本写法不唯一,根据分秒变化的关系,可以有多种写法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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
脚本二:
#!/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
m
i
n
u
t
e
:
minute:
minute:second | tr “\n” “\r”
(( second-- ))
sleep 1
elif (( $second<0 ))
then
(( minute-- ))
(( second=59 ))
fi
done