shell脚本中条件测试和结构化语句

知识要点
条件测试
if语句
for循环语句

条件测试操作
1.test命令
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
格式1:test 条件表达式 (状态返回值,非零是不成立)
格式2:[ 条件表达式 ] 两边应有空格

2.常见的测试类型
测试文件状态
整数值比较(())
字符串比较
逻辑测试

3.文件测试
格式:[ 操作符 文件或目录 ]

4.常用的测试操作符
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-s: 测试文件存在且内容非空(仅有1个空格也是非空)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)在这里插入图片描述补充:域名解析顺序1.找本地文件/etc/hosts 2.找本地域名解析的缓存 3. 找DNS服务器
5.整数值比较(传统方法)
格式:[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)

用[]来测试字符串的时候,需要使用双引号来包含字符串在这里插入图片描述6.双圆括号整数值比较(推荐方法)
格式(( 整数1 操作符 整数2 ))在这里插入图片描述7.字符串比较(传统方法)
格式1:[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:[ -z 字符串 ] 测试字符串内容为空(看状态返回值)

常用的测试操作符
=:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n:字符串非空在这里插入图片描述8.字符串比较时建议加上双引号在这里插入图片描述9.双方括号字符串比较(推荐方法)
格式: [ [ 字符串1 = 字符串2 ]]
可以解决变量中带空格的问题在这里插入图片描述可以使用通配符如?*在这里插入图片描述在这里插入图片描述10.逻辑测试
格式1:[ 表达式1 ] &&或|| [ 表达式2 ] …
格式2:[ 表达式1 -a或-o 表达式2 ] …

常用的测试操作符
-a或&&:逻辑与,“而且”的意思
前后两个表达式都成立时整个测试结果才为真,否则为假
前边成立后边才运行,前边不成立后边不运行
-o或||:逻辑或,“或者”的意思
操作符两边至少一个为真时,结果为真,否则结果为假
前边成立后边不运行,前边步成立后边运行
!:逻辑否(相当于取反)
当指定的条件不成立时,返回结果为真在这里插入图片描述if语句的结构
1.单分支结构在这里插入图片描述2.双分支结构在这里插入图片描述3.多分枝结构在这里插入图片描述在这里插入图片描述If语句应用示例
1.单分支if语句
检查httpd服务是否开启在这里插入图片描述3.双分支if语句
判断目标主机是否存活,显示检测结果在这里插入图片描述
注:ping命令 -c 3表示ping三次 -i 0.2表示时间间隔为0.2秒(默认1秒) -w 2 表示等待时间为2秒(2秒没有收到结果会自动退出)在这里插入图片描述4.多分支if语句
判断分数范围,分出优秀、合格、不合格三档在这里插入图片描述exit命令
默认情况下shell脚本以脚本中最后一条命令的退出状态退出,exit后的命令不会被执行,马上 退出脚本在这里插入图片描述exit n n是0-255的退出状态数值,不写n默认为0在这里插入图片描述for语句的结构
读取不同的变量值,用来逐个执行同一命令 遍历在这里插入图片描述for语句
for i in 的各种用法
for i in “file1” “file2” “file3”
for i in /boot/*
for i in /etc/*.conf
for i in $(seq -w 10) //01-10 遍历(循环)十次(对比应用示例2)
for i in {1…10} //1-10遍历(循环)十次
for i in $( ls )
for I in ( < f i l e ) / / f o r i i n (<file) //输入重定向 for i in “ @” #取所有位置参数,可简写为for i

for语句c语言语法
bash shell支持C式for循环
for (( i=1; i<10; i++ ))

根据脚本输入的参数创建任意个文件在这里插入图片描述for语句应用示例
1.编写脚本清空所有arp缓存记录在这里插入图片描述
2.产生十个随机数在这里插入图片描述3.倒数5秒在这里插入图片描述4.批量添加用户
用户名存放在users.txt文件中,每行一个在这里插入图片描述5.初始密码均设为123456在这里插入图片描述6.根据位置参数批量添加用户在这里插入图片描述7.根据IP地址检查主机状态
IP地址存放在ipadds.txt文件中,每行一个在这里插入图片描述使用ping命令检测各主机的连通性在这里插入图片描述8.根据IP地址检查网络中存活的主机IP在这里插入图片描述循环控制语句

1.break语句
在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体后的语句在这里插入图片描述循环体内,break后面的代码不会执行了,然后跳出循环,但会执行done后的代码

2.continue语句
在for、while、until等循环语句中,用于跳过循环体内余下的语句,重新判断条件以便执行下一次循环在这里插入图片描述循环体内,continue后面的代码不会执行,但不会跳出循环,会进入下一次循环

break和continue语句只能出现在循环内部,不能出现在循环外部
break和continue语句应用示例
分析下列两个脚本的显示结果在这里插入图片描述第一个输出1 第二个输出1 3 5

猜你喜欢

转载自blog.csdn.net/qq_43028054/article/details/89196154