上一篇笔记在终端输入shell命令实现了LED灯的点亮与熄灭,作为初学者,已经兴奋了一阵,因为终于有了零的突破。手动点亮LED总会比较麻烦,还是得通过程序让它自己去点亮与熄灭,这样才更好玩。这篇笔记里,笔者通过学习shell脚本,实现LED的闪烁,这样才好玩。本篇笔记还是先从现象看起,然后在分析其实现原理。
第一步:实现LED灯闪烁
1、先来个简单的shell脚本,了解一下shell脚本的使用流程。下图为创建一个名为hello_sh的shell脚本编辑执行的过程。
几点说明:
(1)shell脚本可以没有文件后缀名,但是为了方便,也可以添加.sh为其后缀。上图中用_sh作为表示,也可以没有;
(2)shell脚本创建可以利用touch filename的形式来创建;
(3)编辑shell脚本可以直接使用vi编辑器,关于vi编辑器的简单实用请查看上一篇笔记;
(4)shell脚本是不需要编译就可以运行,有shell解释器完成命令的解读与执行;
(5)新建的shell脚本需要为其添加可执行权限,否则执行时会出错;
(6)运行shell脚本直接使用 ./* 就可以运行;
(7)上图中hello_sh脚本文件里只有一行内容,目的是输出hello字符,脚本内容如下图。
2、下面就进入今天的主题,首先还是要手动创建shell脚本文件,笔者的文件名为led_sh。创建和添加权限的过程就不在此贴了,请参考上文。下面直接贴出led_sh的内容。
几点说明:
(1)有关shell的详细使用,请参考这个链接http://c.biancheng.net/cpp/shell/。这个网站有精简的shell教程,对于初学者来说入门还是挺快的;
(2)简答解释一下脚本内容:
1)第1行:在终端显示hello led一串字符;
2)第2~4行:这部分是一个if语句,目的是查看是否有gpio44文件,如果没有,通过第3行脚本添加一个;
3)第4行:为gpio44添加输出属性;
4)第7~13行:这部分是一个while语句,在while语句里面先点亮LED,然后睡眠0.25秒再熄灭LED,再睡眠0.25秒。如此不停的循环。
5)第14行:关闭LED灯。
3、通过vi编辑器输入上面的脚本,然后运行,就可以看到LED灯闪烁的状态了。现象和上一篇笔记是一样的,不过这次直接运行脚本就可以实现不断的闪烁了。
第二步:学习简单的shell脚本
1、echo用法上一篇笔记已经说明,此处不再说明。
2、if用法。
if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。if语句有三种用法,这里只说明最简单的一种语法,if ... else 语句:
1 if [ expression ] then 2 Statement(s) to be executed if expression is true 3 fi几点说明:
(1)如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。
(2)最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写。
(3)expression 和方括号([ ])之间必须有空格,否则会有语法错误。
3、while用法。
while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:
while command do Statement(s) to be executed if command is true done几点说明:
(1)命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假,否则不退出;
(2)循环体的内容包含在do……done之间。