条件测试

文件测试与整数测试

字符串测试与逻辑测试

if语句

if单分支、双分支、多分支语句。

case分支语句

1.测试

1.1文件测试

test命令:测试表达式是否成立,成立返回0,否则返回其他数值。

常用的测试操作符

-d:测试是否为目录(Directory)

-e:'测试目录或文件是否存在(Exist)

-f: 测试是否为文件(File)

-r:测试当前用户是否有权限读取(Read)

-w:测试当前用户是否有权限写入(Write)

-x:测试当前用户是否有权限执行(eXcute)

-c:测试是否为字符设备文件

-b:测试是否为设备文件

-s: 测试存在且文件大小为空

-L:测试是否为链接文件

Shell编程之条件语句与循环语句和函数_分支结构

Shell编程之条件语句与循环语句和函数_字符串_02

Shell编程之条件语句与循环语句和函数_字符串_03

1.2整数值比较

常用的测试操作符

格式:【整数1 操作符 整数2 】

在shell脚本中,使用-eq、-ne、-gt、-ge、-lt、-le进行整数的比较。英文意思分别为:

-eq :equal(相等)

-ne :not equal(不等)

-gt :greater than(大于)

-ge :greater than or equal(大于或等于)

-lt :less than(小于)

-le :less than or equal(小于或等于)

注意:在shell中这些符号只能用于整数的比较,不能用于字符串。

Shell编程之条件语句与循环语句和函数_分支结构_04

Shell编程之条件语句与循环语句和函数_字符串_05

Shell编程之条件语句与循环语句和函数_字符串_06

Shell编程之条件语句与循环语句和函数_操作符_07

1.3字符串比较

字符串比较通常用来检查用户输入、系统环境等是否满足条件,在提供交互式操作的Shell脚本中,也可用来判断用户输入的位置参数是否符合要求。字符串比较的常用操作选项如下。

格式1[字符串1=字符串2] [字符串1 !=字符串2]

格式2 [-z 字符串]

常用的测试操作符

=:字符串内容相同

!=: 字符串内容不同,!表示相反的意思

-z :字符串内容为空

Shell编程之条件语句与循环语句和函数_分支结构_08

测试读入的字符串是否为yes

Shell编程之条件语句与循环语句和函数_分支结构_09

1.4逻辑测试

常用的测试操作符

-a或&&:逻辑与, “而且”的意思

-o或||:逻辑或,  “或者”的意思

!:逻辑否(取反)

Shell编程之条件语句与循环语句和函数_操作符_10

Shell编程之条件语句与循环语句和函数_分支结构_11

Shell编程之条件语句与循环语句和函数_分支结构_12

2.if语句

2.1单分支结构

读取不同的变量值,逐个执行同一组命令

单个括号( [] ) :必须要有空格两个字符或数字之间的比较左右必须有空格

条件判断:test一种形式,[]中间只能使用=和!=比较字符串,如果使用<、>需要进行转义\.

然后中间如果比较数字要用-lt 等符号,不能使用\<比较数字,他会当成字符串处理

两个括号([[]]):可用于处理逻辑命令,也可以处理字符串是否相等,且使用<、>不用转义符

Shell编程之条件语句与循环语句和函数_字符串_13

Shell编程之条件语句与循环语句和函数_字符串_14

Shell编程之条件语句与循环语句和函数_操作符_15

Shell编程之条件语句与循环语句和函数_操作符_16

Shell编程之条件语句与循环语句和函数_字符串_17

Shell编程之条件语句与循环语句和函数_操作符_18

2.2双分支结构

【格式】

if条件测试操作

      then 命令序列1

      else 命令序列2

fi

案例1:判断机器是否存活

Shell编程之条件语句与循环语句和函数_操作符_19

Shell编程之条件语句与循环语句和函数_分支结构_20

 案例2:判断用户是否存在

Shell编程之条件语句与循环语句和函数_操作符_21

Shell编程之条件语句与循环语句和函数_操作符_22

案例3:是否启动apache服务

查询有没有80端口的服务存在,把输出的信息放到黑洞里

Shell编程之条件语句与循环语句和函数_操作符_23

Shell编程之条件语句与循环语句和函数_分支结构_24

Shell编程之条件语句与循环语句和函数_分支结构_25

案例4:查看当前用户是否是管理员

Shell编程之条件语句与循环语句和函数_操作符_26

Shell编程之条件语句与循环语句和函数_字符串_27

2.3多分支结构

【格式】

if  条件测试操作1

then  命令序列1

elif  条件测试操作2

then  命令序列2

else  命令序列3

fi

案例1:判断文件类别

Shell编程之条件语句与循环语句和函数_分支结构_28

Shell编程之条件语句与循环语句和函数_分支结构_29

Shell编程之条件语句与循环语句和函数_字符串_30

Shell编程之条件语句与循环语句和函数_分支结构_31

案例2:根据输入的考试分数罚抄不同

有点bug

Shell编程之条件语句与循环语句和函数_分支结构_32

Shell编程之条件语句与循环语句和函数_字符串_33

Shell编程之条件语句与循环语句和函数_操作符_34

更改后的

Shell编程之条件语句与循环语句和函数_字符串_35

Shell编程之条件语句与循环语句和函数_分支结构_36

case

Shell编程之条件语句与循环语句和函数_字符串_37

如果移除httpd服务,会出错

Shell编程之条件语句与循环语句和函数_操作符_38

Shell编程之条件语句与循环语句和函数_字符串_39

Shell编程之条件语句与循环语句和函数_字符串_40

Shell编程之条件语句与循环语句和函数_分支结构_41

Shell编程之条件语句与循环语句和函数_分支结构_42

3.case语句结构

case多分支结构

case 变量值 in

模式1)

命令序列1

;;

模式2)

命令序列2

;;

......

*)

默认命令序列

esac

case 行尾必须为单词 “in” 每一模式必须以右括号“)”结束。

;;双分号表示命令序列的结束。

案例:检查用户输入的字符类型

Shell编程之条件语句与循环语句和函数_分支结构_43

Shell编程之条件语句与循环语句和函数_字符串_44

编写apache启动服务脚本

Shell编程之条件语句与循环语句和函数_字符串_45

Shell编程之条件语句与循环语句和函数_分支结构_46

案例:一年四季

Shell编程之条件语句与循环语句和函数_操作符_47

Shell编程之条件语句与循环语句和函数_字符串_48

总结:

条件测试的语法:

文件测试、整数值比较、字符串比较、逻辑测试

if条件语句的语法:

单分支、双分支、多分支

case多分支语句的语法