Linux系统(七):shell脚本编辑
一、总纲
shell脚本命令工作方式:交互式和批处理;交互式,即用户输入一条命令就立即执行;批处理,即由用户事先编写好一个完整的shell脚本,shell会一次性执行脚本中诸多的命令;shell脚本不仅会用到学习过的Linux命令以及正则、管道符、数据流重定向,还需要把内部功能模块化通过逻辑语句进行处理,最终形成shell脚本;
二、简单的脚本编写
其实使用vim编辑器把Linux命令按照顺序依次写入到一个文件中,这就是一个简单的脚本了;
示例:创建一个example.sh文件,里面写3个命令;bash 执行该文件
解释:上面截图的第一行脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行注释信息(#)是对脚本内容的介绍;
执行结果:
除了上面的bash解释器命令直接运行Shell脚本文件外,第二种运行脚本程序的方法是通过输入完整路径的方式来执行。但需要给脚本文件增加执行权限即可;
三、接收用户参数并执行脚本文件
上面截图中,使用的$1,就是引用的bash example.sh example.sh的第一个参数example.sh;如果没有引用参数的命令,直接bash example.sh就执行了脚本文件;下面我们详细说一下,接收用户参数并执行脚本文件;
bash 脚本文件 one two three four five six……参数直接使用空格间隔
$0: 当前Shell脚本程序的名称
$#: 总共有几个参数
$*:所有参数的值
$?: 显示上一次命令的执行返回值
$1、$2、$3……则分别对应着第N个位置的参数值;
示例:
执行及执行结果:
四、判断用户的参数
上面的例子只是简单的接收了参数作了最简单的应用;下面我们需要对参数进行处理;
条件测试语句格式:[ 条件表达式 ] 注意:两边均有一个空格;
条件测试语句可以分为4种:文件测试语句、逻辑测试语句、整数值比较语句、字符串比较语句
Shell脚本中的条件测试语句可以判断表达式是否成立,若条件成立则返回数字0,否则返回其他随机数值;
文件比较符:
运算符 | 作用 |
-d | 测试文件是否为目录类型 |
-e | 测试文件是否存在 |
-f | 判断是否为一般文件 |
-r | 测试当前用户是否有权限读取 |
-w | 测试当前用户是否有权限写入 |
-x | 测试当前用户是否有权限执行 |
文件测试语句单一命令示例:
逻辑测试语句示例:(&&,|| ,!)--->与、或、非
可用的整数比较运算符:
运算符 | 作用 |
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否等于或小于 |
-ge | 是否大于或等于 |
常见的字符串比较运算符:
运算符 | 作用 |
= | 比较字符串内容是否相同 |
!= | 比较字符串内容是否不同 |
-z | 判断字符串内容是否为空 |
五、流程控制语句
简短解说:if、for、while、case这4种流程控制语句来学习编写更实用的Shell脚本;
5.1 if条件测试语句
格式:if …… then ……fi
意思:如果……那么……
格式:if …… then …… else ……fi
意思:如果……那么……否则……
格式:if …… then …… elif ……then……else……fi
意思:如果……那么……如果……那么……否则……
示例1:
执行结果:
5.2 for条件循环语句
格式:
for 变量名 in 取值列表
do 命令
done