文章目录
一、test命令1.2、格式1.2、实例操作二、文件测试2.1、格式:2.2、常用的测试操作符2.3、实例操作三、整数值比较3.1、格式3.2、常用的测试操作符3.3、实例操作四、字符串比较4.1、格式4.2、常用的测试操作符4.3、实例操作五、逻辑测试(三元运算符)5.1、格式5.2、常用的测试操作符5.3、实例操作一5.4、实例操作二六、if语句6.1、单分支结构6.1.1 格式6.1.2 原理图:6.1.3 实例操作6.2、双分支结构6.2.1 格式6.2.2 原理图:6.2.3 实例操作一6.2.4 实例操作二6.3、多分支结构6.3.1 格式6.3.2 原理图:6.3.3 实例操作七、case语句结构7.1、格式7.2、实例操作一7.3、实例操作二八、总结一、test命令
1.2、格式
测试表达式是否成立,若成立返回0,否则返回其他数值。
格式1: test 条件表达式格式2: [ 条件表达式 ]
1.2、实例操作
二、文件测试
2.1、格式:
操作符 文件名或者目录名
2.2、常用的测试操作符
-d∶ 测试是否为目录(Directory)
-e∶ 测试目录或文件是否存在(Exist)
-f∶ 测试是否为文件(File)
-r∶ 测试当前用户是否有权限读取(Read)
-w∶ 测试当前用户是否有权限写入(Write)
-x∶测试当前用户是否有权限执行(eXcute)
-L∶测试是否为软链接文件
2.3、实例操作
三、整数值比较
3.1、格式
[ 整数1 操作符 整数2 ]
3.2、常用的测试操作符
-eq∶ 等于(Equal)-ne∶ 不等于(Not Equal)-gt∶ 大于(Greater Than)-lt∶ 小于(Lesser Than)-le∶ 小于或等于(Lesser or Equal)·-ge∶ 大于或等于(Greater or Equal)
3.3、实例操作
1 结合逻辑与进行查询当前目录下的文件数目
2 查看系统内存是否低于或者高于1024M,如果满足条件则提示
3 使用双括号加数字进行表示
四、字符串比较
4.1、格式
[ 字符串1 = 字符串2 ] #判断是否相等[ 字符串1 != 字符串2 ] #判断是否不等[ -z 字符串 ] #是否空值[ -n 字符串 ] # 字符集是否存在
4.2、常用的测试操作符
=∶ 字符串内容相同!=∶ 字符串内容不同,!号表示相反的意思z∶字符串内容为空4.3、实例操作
五、逻辑测试(三元运算符)
5.1、格式
格式1∶ [ 表达式1 ] 操作符 [ 表达式2 ]…格式2∶ 命令1 操作符 命令2…
5.2、常用的测试操作符
-a或&&∶ 逻辑与,"而且"的意思-o或||∶ 逻辑或,"或者"的意思!∶逻辑否5.3、实例操作一
5.4、实例操作二
#!/bin/bash#Ping testping -c 3 -i 0.5 -w 2 $1 &> /dev/null && echo "$1 is online!" || echo "$1 is offline!"
六、if语句
6.1、单分支结构
如果只有一个判断式要进行,那么我们可以使用单分支的if语句
6.1.1 格式
if [ 条件判断式 ]; then当条件判断成立时,可以进行的命令工作内容fi #这里将if反过来写,结束if语句的意思
6.1.2 原理图:
6.1.3 实例操作
6.2、双分支结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了:
6.2.1 格式
if [ 条件判断式 ]; then当条件判断成立时,可以进行的命令工作内容else 当条件判断不成立时,可以进行的命令工作内容fi
6.2.2 原理图:
6.2.3 实例操作一
6.2.4 实例操作二
#!/bin/bash#Shut down httpd servicenetstat -natp | grep :80 &> /dev/nullif [ $? -eq 0 ];thenecho "httpd 服务正常运行!"elseecho "httpd 服务未开启,正在开启服务......"systemctl start httpd && echo "httpd 服务启动成功"fi
6.3、多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构
6.3.1 格式
if [ 条件判断式 ]; then当条件判断成立时,可以进行的命令工作内容elif [ 条件判断式二 ]; then当条件判断成立时,可以进行的命令工作内容else 当上面的条件判断都不成立时,可以进行的命令工作内容fi
6.3.2 原理图:
6.3.3 实例操作
七、case语句结构
7.1、格式
case 变量名称 in“第一个变量内容”程序段;;“第二个变量内容”程序段;;*)不包含第一个变量内容与第二个变量内容的其他程序执行段默认程序段;;esac
7.2、实例操作一
#!/bin/bash#Determine grades and scoresread -p "请输入你的分数(0-100):" score[ $score -ge 90 -a $score -le 100 ] && a="great"[ $score -ge 70 -a $score -le 89 ] && a="medium"[ $score -ge 60 -a $score -le 69 ] && a="pass"[ $score -lt 60 ] && a="fail"case $a ingreat)echo "优秀";;medium)echo "中等";;pass)echo "及格";;fail)echo "不及格";;*)echo "输入有误"esac
7.3、实例操作二
#!/bin/bash#Determine Inputread -p "请输入一个字符:" stringcase "$string" in[a-z]|[A-Z])echo "你输入的是字母";;[0-9])echo "你输入的是数字";;*)echo "你输入的是其他字符"esac
八、总结
1、test命令:
两种格式
test 条件表达式
[条件表达式]
2、文件测试
-d -e -f -r -w -L
3、整数值比较
-eq -ge -le -gt -lt -ne
4、字符串比较
相等=
不相等 !=
空值 -z
是否存在 -n
5、逻辑测试
逻辑与:-a 或者&&
逻辑或:-o 或者||
逻辑否:!
6、if语句
单分支
双分支
多分支
当 if 语句中使用 [ ] 条件修饰符时, $flag 变量必须加上引号。
当 if 语句中使用 [[]] 条件修饰符时,$flag 变量的引号可有可无。
7、case语句
多分支结构