各位同学们好呀,上一次文章呢,简单介绍了Shell脚本中的循环流程控制,结合前面几章的内容,Shell脚本除了函数和不同Shell脚本之间的互相引用等内容以外,其它关于Shell脚本应该知道的一些基础知识,我们到本次文章为止,就已经基本介绍完毕了。
通过前面的学习和了解,想必你肯定会使用Shell脚本实现一些简单的功能了,如果你忘记了前面几章的内容,可以点击以下链接去回顾一下。
Shell脚本怎么写?(0)
Shell脚本怎么写?(1)——Shell 变量类型和定义
Shell脚本怎么写?(1-2)——Shell 变量的高级用法
Shell脚本怎么写?之 Shell脚本中的流程控制(1)
Shell脚本怎么写?之 Shell脚本中的流程控制(2)
好了,我们还是废话不多说,开始今天的内容吧。今天是个实践课,我们使用前面学到的内容写一些简单的Shell脚本,达到一定的功能。
下面请看第一个示例:
示例需求:
- 要求从0开始数到40, 每秒增加一个数。
- 数字增大需要在原地替换,起到倒数计时的那种效果。
这么一个简单的需求怎么完成呢?
请看示例代码:

示例场景实现代码
实现效果如下:

数字依次更新变化到7

数字依次更新变化到20
上面的代码有几个注意点给大家讲解一下:
- tput sc, tput rc tput ed 这一套命令,是定位屏幕打印光标位置使用的,由于我们需要原位更新数字,我们每次更新之前都需要在之前打印的数字的原位置做覆盖,不能直接以追加的形式打印。
如果不使用tput 定位,结果如下:

不使用tput定位,直接append 追加打印了
代码的其它部分,就是简单的我们学过的while 循环和 if else 分支判断了,相信大家认真阅读过之前文章的同学,应该不难理解上面的代码。
好的,看完了上面的示例,我们又来新的需求了:
需求1:
- 打印一个8x8 的国际象棋棋盘。
好的,拿到需求之后,我们分析一下,其实8x8的国际棋盘,无外乎是用两种颜色的方格相互间隔构成的,根据奇偶性的不同,进行不同颜色的格子打印即可。
示例程序如下:

打印蓝白相间的8x8国际象棋棋盘
其中,echo 的高级用法我们前面没有介绍,这里简单介绍下,echo 后面可以跟-ne
-n do not output the trailing newline #不输出末尾的换行符
-e enable interpretation of backslash escapes #启用反斜杠转义的解释
echo 后面的-n 和 -e 参数解释如上,后面跟的一堆诡异的字符是代表颜色,前景色和背景色的颜色编码。
最终的运行效果如下所示:

打印8x8的国际象棋棋盘效果
这个示例的话,我们主要是用到了for 循环 和 分支判断,分支判断中使用了简单的算术运算,这些都是我们之前的文章中讲到过的。
大家要记住,编程写代码,就是对这些简单的基础概念的灵活运用。
好了,今天算是一节练习课,通过两个简单的shell脚本示例,把之前文章中介绍过的功能使用一遍,加深大家的理解。
下一节课的话,我们会把Shell脚本中其它未介绍的内容进行一个系统性的介绍,主要包括Shell脚本的函数定义, 多个Shell脚本直接的相互引用和包含等。
如果你觉得我的介绍对你有用的话,请关注点赞收藏哟。。你的关注是我更新的动力。。。