这个脚本已做了比较大的改动,功能更加完善,脚本可读性更强, 这里附上链接,有需要的朋友可以看看,觉得有什么地方可以改进给我建议,相互学习!
修改后的脚本的博文链接:https://blog.csdn.net/weixin_44901564/article/details/101781896
一、脚本需求
1.能够满足1000分钟以内的倒计时
2.输入秒数超过60时能够自动转化为分钟输出
3.要在屏幕中间结合图形输出
4.输出的图形数字每一个图形都是由该数字组成
先看看输出效果的图片:
像这样,每一个数字的图形都是由该数字组成
二、写脚本的思路
这个脚本可以看成是两种脚本的结合:
1.倒计时脚本
2.输出图形的脚本,而且输出的数字图形都是由该数字组成
可以说是将倒计时脚本输出的值存在一个变量里面传给输出输出图形脚本,然后将变量的值分解开来,例如变量的值为12:12,可以将12:12拆分为5个部分,分别为1、2、:、1、 2,然后再利用if判断判断每一个数字的值是多少,然后再输出相对应的数字图形
图形的坐标都由上图所得:
例如:
数字0的图形,坐标为(0 0 1 0 2 0 0 1 2 1 0 2 2 2 0 3 2 3 0 4 1 4 2 4)
数字1的图形,坐标为(1 0 1 1 1 2 1 3 1 4)
三、上脚本
#!/bin/bash
#====================================================================
#
# 文件名:countdown_Graphical.sh
#
# 用途:倒计时
#
# 用法:sh /root/countdown_Graphical.sh--->不输入时间默认为0
#
# 创建时间:2019-09-20
#
# 作者:xxx
#
# 坐标如下: 00 10 20
# 01 11 21
# 02 12 22
# 03 13 23
# 04 14 24
#
#===================================================================
echo -e "\033[1;32m"+===================================================================="\033[0m"
echo -e "\033[1;32m"+"\033[0m" "\033[1;31m"注意:"\033[0m"
echo -e "\033[1;32m"+"\033[0m" "\033[1;31m"脚本只支持数字倒计时,如果不小心输入'\'符号看到脚本卡住,继续按回车键"\033[0m"
echo -e "\033[1;32m"+"\033[0m" "\033[1;31m"或者正常输入就可以了,因为linux命令行下执行'\'的作用是换行输入"\033[0m"
echo -e "\033[1;32m"+===================================================================="\033[0m\n"
function f_print_coordinate
{
num0=(0 0 1 0 2 0 0 1 2 1 0 2 2 2 0 3 2 3 0 4 1 4 2 4)
num1=(1 0 1 1 1 2 1 3 1 4)
num2=(0 0 1 0 2 0 2 1 2 2 1 2 0 2 0 3 0 4 1 4 2 4)
num3=(0 0 1 0 2 0 2 1 2 2 1 2 0 2 2 3 2 4 1 4 0 4)
num4=(0 0 0 1 0 2 1 2 2 2 2 0 2 1 2 3 2 4)
num5=(2 0 1 0 0 0 0 1 0 2 1 2 2 2 2 3 2 4 1 4 0 4)
num6=(2 0 1 0 0 0 0 1 0 2 0 3 0 4 1 2 2 2 2 3 2 4 1 4)
num7=(0 0 1 0 2 0 2 1 2 2 2 3 2 4)
num8=(0 0 0 1 0 2 0 3 0 4 1 0 2 0 2 1 1 2 2 2 2 3 1 4 2 4)
num9=(0 0 0 1 0 2 1 0 2 0 2 1 2 2 1 2 2 3 2 4 1 4 0 4)
colon=(1 1 1 3 )
}
function f_print_judge
{
echo ""
echo -e "\033[1;31m[ FAIL ]\033[0m \033[1;31m$1\033[0m \n"
}
##确定k的值
function f_if_k
{
k1=($1)
if [ "${z[*]}" == "