Shell是用户态进行高效,安全访问Linux内核态的一个中间桥梁,是一个应用程序,同时是一个可编程的应用程序(也叫解析器),这种编程的语言是脚本语言(Shell 脚本,由解析器解析运行的语言);和音乐播放器一样(酷狗,QQ音乐,网易云),Shell这个解析器也有很多类型:sh、bash、csh、tcsh、ash;在X86服务器平台我们基本都是使用bash,bash也是Linux原生支持的解析器,由GNU组织开发,兼容sh(这意味着针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行);但是在嵌入式Linux的平台上,出于可移植性考虑,我们使用sh的规范。
1 基本语法
1.1 第一个程序
Shell脚本的相关代码我们放在~/workspace/basics/shell这个目录下。
Shell脚本的命名方式是以.sh为后缀的文件,比如test.sh;运行方式有两种,一种是通过解析器:sh test.sh的方式,另一种是给文件加可执行权限,然后直接运行:chmod +x test.sh , ./test.sh。
Shell脚本的开头需要包含一个基本说明:#!/bin/sh,除了这一句,注释需要以#号开头,如下例子:
脚本是解析运行的语言,不需要编译,直接运行:
1.2 日志输出
为了区分输出信息的重要性,我们对echo这个命令进行封装,使其能输出不同颜色的日志,达到区分重要性的作用,代码如下:
我们给echo封装出两个接口,一个是:LOGD,一个是LOGE,用来输出不同颜色的日志;说明一下,这个地方用到了函数的概念,我们暂时忽略,后面会讲到,这里用法和echo是一样的。
运行如下:
1.3 变量
定义变量时不需要指明类型,直接赋值就可以,注意变量和值之间不能有空格,不然运行会出错;命名只能使用英文字母,数字和下划线,首个字符不能以数字开头,基本会用到的变量类型就两种:数值 和 字符串:
使用一个定义过的变量,只要在变量名前面加美元符号即可:
其中花括号是可选的,也就是说可以用 $value,$string来表示变量,但是我们用的时候把花括号加上形成好习惯,不然不完全熟悉shell语法在一些多变量连接时会出问题。