4.2编写Shell脚本
Shell脚本命令的工作方式有两种:交互式和批处理。
交互式:用户输入一条命令就立刻执行。
批处理:由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多命令。
下面这个实验查看SHELL变量,发现当前系统默认使用bash作为命令行终端解释器了。
4.2.1 编写简单的脚本
下面这个实验是使用vim编辑器吧Linux命令按照顺序一次写入到一个文件中,这就是一个简单的脚本了。
想查看当前所在工作路径并列出当前目录下所有的文件及属性信息,实现脚本如下:
4.2.2接受用户的参数
以下这个实验看出shell接受用户参数。
(好吧,这英语有点差,但是我还没去找怎么输入汉字)
4.2.3判断用户的参数
前面学习了mkdir命令会判断用户输入的信息。(判断用户指定的文件夹是否存在,若存在则提示报错,若不存在则自动创立)
shell脚本中的条件测试语法可以判断表达时是否成立,若条件成立则返回0,否则返回其他随机数值。格式中需要记得,前后各有一个空格。
按照测试的对象划分为以下四种:
文件测试语句
逻辑测试语句
整数值比较语句
字符串比较语句
文件测试所用的参数如下表所示
运算符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 文件是否存在 |
-f | 是否为一般文件 |
-r | 当前用户是否有权限读文件 |
-w | 当前用户是否有权限写文件 |
-x | 当前用户是否由权限执行文件 |
下面使用文件测试语句来判断/etc/fstab是否为一个目录类型的文件。$?变量显示上一条命令执行后返回的值。若返回0则存在,返回不为0,则不存在。
接着判断/etc/fstab是否为一般文件。
逻辑语句用于对测试结果进行逻辑分析,在shell终端中逻辑“与”的运算符&&,或||,非!,以下三个实验分别测试这三种运算符。
逻辑运算符这里和c是一样的,下面这个例子如果会判断&&和||的优先级是很好做出最后的结果的。
因为等号与赋值命令符冲突,大于号和小于号分别与输出定向符和输入定向符冲突,所以下表展示了整数的比较运算符。
运算符 | 作用 |
-eq | 等于 |
-ne | 不等于 |
-gt | 大于 |
-lt | 小于 |
-le | 等于或小于 |
-ge | 大于或等于 |
下面这个实验测试一下10是否大于10,10是否等于10。
以下这个实验涉及到:free命令:获取当前系统正在使用及可用的内存量信息。
free -m 命令查看内存使用量的情况(单位MB); grep Mem命令:过滤出剩余内存量的行 ; awk'{print $4}'命令只保留第四列 ; FreeMem=’语句‘的方式把语句内执行的结果赋值给变量。
用整数运算符来判断内存可用量的值是否小于1024,若小于则会提示“insufficient memory”(内存不足)的字样。
实验如下:
字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。
-z 判断字符串内容是否为空值 ; != 比较字符串内容是否不同 ; = 比较字符串内容是否相同。
接下来这个实验 通过判断String是否为空值,进而判断是否定义了这个变量:
再增添逻辑运算符,当用于保存当前语系的LANG不是英语(en.US)时,则输出"Not en.US"(非英语)的字样。
好啦,已经对shell脚本有了简单的认识,我们下个小节再见!