效果如下:
代码如下:
#! /bin/bash
#####################倒计时################
#作者:liop
#完成时间:2019.12.17
#三位数以内秒数的倒计时
##########################################
display(){case $1 in1)case $2 in1)echo "******** ";;2)echo "******** ";;3)echo " *** ";;4)echo " *** ";;5)echo " *** ";;6)echo " *** ";;7)echo " *** ";;8)echo " *** ";;9)echo " *** ";;10)echo " *** ";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;2)case $2 in1)echo "*************";;2)echo "*************";;3)echo " ***";;4)echo " ***";;5)echo " ***";;6)echo "*************";;7)echo "*************";;8)echo "*** ";;9)echo "*** ";;10)echo "*** ";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;3)case $2 in1)echo "*************";;2)echo "*************";;3)echo " ***";;4)echo " ***";;5)echo " ***";;6)echo "*************";;7)echo "*************";;8)echo " ***";;9)echo " ***";;10)echo " ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;4)case $2 in1)echo "*** ***";;2)echo "*** ***";;3)echo "*** ***";;4)echo "*** ***";;5)echo "*** ***";;6)echo "*************";;7)echo "*************";;8)echo " ***";;9)echo " ***";;10)echo " ***";;11)echo " ***";;12)echo " ***";;*)echo ""esac;;5)case $2 in1)echo "*************";;2)echo "*************";;3)echo "*** ";;4)echo "*** ";;5)echo "*** ";;6)echo "*************";;7)echo "*************";;8)echo " ***";;9)echo " ***";;10)echo " ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;6)case $2 in1)echo "*************";;2)echo "*************";;3)echo "*** ";;4)echo "*** ";;5)echo "*** ";;6)echo "*************";;7)echo "*************";;8)echo "*** ***";;9)echo "*** ***";;10)echo "*** ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;7)case $2 in1)echo "*************";;2)echo "*************";;3)echo " ***";;4)echo " ***";;5)echo " ***";;6)echo " ***";;7)echo " ***";;8)echo " ***";;9)echo " ***";;10)echo " ***";;11)echo " ***";;12)echo " ***";;*)echo ""esac;;8)case $2 in1)echo "*************";;2)echo "*************";;3)echo "*** ***";;4)echo "*** ***";;5)echo "*** ***";;6)echo "*************";;7)echo "*************";;8)echo "*** ***";;9)echo "*** ***";;10)echo "*** ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;9)case $2 in1)echo "*************";;2)echo "*************";;3)echo "*** ***";;4)echo "*** ***";;5)echo "*** ***";;6)echo "*************";;7)echo "*************";;8)echo " ***";;9)echo " ***";;10)echo " ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;0)case $2 in1)echo "*************";;2)echo "*************";;3)echo "*** ***";;4)echo "*** ***";;5)echo "*** ***";;6)echo "*** ***";;7)echo "*** ***";;8)echo "*** ***";;9)echo "*** ***";;10)echo "*** ***";;11)echo "*************";;12)echo "*************";;*)echo ""esac;;*)echo ''esac
}
#for i in {1..12}
#do
# echo "$(display 1 $i) $(display 2 $i) $(display 3 $i)"
#donec1=$[$1%10]
if [ $1 -gt 99 ];thenc2=$[$[$1/10]%10]c3=$[$[$1/10]/10]
elif [ $1 -gt 9 ];thenc2=$[$[$1/10]%10]c3=0
elsec2=0c3=0
fi
while :
dowhile :dowhile :doif [ $c1 -lt 0 ];thenc1=9breakelsefor i in {1..5}doecho ""doneecho " 倒计时:"echo ""echo ""echo ""for i in {1..12}doecho -e "\e[31m $(display $c3 $i) $(display $c2 $i) $(display $c1 $i)\e[0m"donesleep 1let c1--clearfidoneif [ $c2 -eq 0 ];thenc2=9breakelselet c2--fidoneif [ $c3 -eq 0 ];thenecho "时间到!!"exitelselet c3--fi
done
更新版本如下(无位数限制):
#! /bin/bash
#####################倒计时################
#作者:liop
#完成时间:2019.12.17
#三位数以内秒数的倒计时
##########################################
display(){case $1 in1)case $2 in1)echo "11111111 ";;2)echo "11111111 ";;3)echo " 111 ";;4)echo " 111 ";;5)echo " 111 ";;6)echo " 111 ";;7)echo " 111 ";;8)echo " 111 ";;9)echo " 111 ";;10)echo " 111 ";;11)echo "1111111111111";;12)echo "1111111111111";;*)echo ""esac;;2)case $2 in1)echo "2222222222222";;2)echo "2222222222222";;3)echo " 222";;4)echo " 222";;5)echo " 222";;6)echo "2222222222222";;7)echo "2222222222222";;8)echo "222 ";;9)echo "222 ";;10)echo "222 ";;11)echo "2222222222222";;12)echo "2222222222222";;*)echo ""esac;;3)case $2 in1)echo "3333333333333";;2)echo "3333333333333";;3)echo " 333";;4)echo " 333";;5)echo " 333";;6)echo "3333333333333";;7)echo "3333333333333";;8)echo " 333";;9)echo " 333";;10)echo " 333";;11)echo "3333333333333";;12)echo "3333333333333";;*)echo ""esac;;4)case $2 in1)echo "444 444";;2)echo "444 444";;3)echo "444 444";;4)echo "444 444";;5)echo "444 444";;6)echo "4444444444444";;7)echo "4444444444444";;8)echo " 444";;9)echo " 444";;10)echo " 444";;11)echo " 444";;12)echo " 444";;*)echo ""esac;;5)case $2 in1)echo "5555555555555";;2)echo "5555555555555";;3)echo "555 ";;4)echo "555 ";;5)echo "555 ";;6)echo "5555555555555";;7)echo "5555555555555";;8)echo " 555";;9)echo " 555";;10)echo " 555";;11)echo "5555555555555";;12)echo "5555555555555";;*)echo ""esac;;6)case $2 in1)echo "6666666666666";;2)echo "6666666666666";;3)echo "666 ";;4)echo "666 ";;5)echo "666 ";;6)echo "6666666666666";;7)echo "6666666666666";;8)echo "666 666";;9)echo "666 666";;10)echo "666 666";;11)echo "6666666666666";;12)echo "6666666666666";;*)echo ""esac;;7)case $2 in1)echo "7777777777777";;2)echo "7777777777777";;3)echo " 777";;4)echo " 777";;5)echo " 777";;6)echo " 777";;7)echo " 777";;8)echo " 777";;9)echo " 777";;10)echo " 777";;11)echo " 777";;12)echo " 777";;*)echo ""esac;;8)case $2 in1)echo "8888888888888";;2)echo "8888888888888";;3)echo "888 888";;4)echo "888 888";;5)echo "888 888";;6)echo "8888888888888";;7)echo "8888888888888";;8)echo "888 888";;9)echo "888 888";;10)echo "888 888";;11)echo "8888888888888";;12)echo "8888888888888";;*)echo ""esac;;9)case $2 in1)echo "9999999999999";;2)echo "9999999999999";;3)echo "999 999";;4)echo "999 999";;5)echo "999 999";;6)echo "9999999999999";;7)echo "9999999999999";;8)echo " 999";;9)echo " 999";;10)echo " 999";;11)echo "9999999999999";;12)echo "9999999999999";;*)echo ""esac;;0)case $2 in1)echo "0000000000000";;2)echo "0000000000000";;3)echo "000 000";;4)echo "000 000";;5)echo "000 000";;6)echo "000 000";;7)echo "000 000";;8)echo "000 000";;9)echo "000 000";;10)echo "000 000";;11)echo "0000000000000";;12)echo "0000000000000";;*)echo ""esac;;*)echo ''esac
}
#for i in {1..12}
#do
# echo "$(display 1 $i) $(display 2 $i) $(display 3 $i)"
#done
c=$[$1*60]
c1=$c
while :
doc1=$cc2=0num=()while [ $c1 -gt 0 ]donum[$c2]=$[c1%10]let c1/=10let c2++donefor i in {1..4}doecho ''doneecho " 倒计时:"for i in {1..12}doc2=${#num[*]}echo -en "\e[31m \e[0m"while [ $c2 -ge 1 ]dolet c2--echo -en "\e[31m$(display ${num[$c2]} $i) \e[0m"doneecho ""donesleep 1clearlet c--if [ $c -eq 0 ]thenfor i in {1..4}doecho ''doneecho " 倒计时:"for i in {1..12}doecho -en "\e[31m \e[0m"echo -en "\e[31m$(display 0 $i) \e[0m"echo ""doneexitfi
done