执行命令并利用命令状态返回值来判断某些状态

echo $?

0代表成功,非0代表不成功

测试表达式

数值比较

-eq 等于

Linux Shell编程之测试条件_Linux

返回值是1,说明2不等于3


-ne 不等于

Linux Shell编程之测试条件_Linux_02

返回值是0 说明2不等于3


还可以直接使用中括号,而不需要输入test关键字

Linux Shell编程之测试条件_Linux_03

返回值为1 说明2等于2


-gt 左侧是否大于右侧

Linux Shell编程之测试条件_Linux_04

左侧的2大于右侧的1

-lt 左侧是否小于右侧

Linux Shell编程之测试条件_Shell_05

左侧2不小于右侧1

剩下还有 le(小于等于) 和ge(大于等于)


字符串比较

注意:在比较字符串的时候,最好使用双中括号,如果有变量最好用双引号引住

Linux Shell编程之测试条件_Shell_06

Linux Shell编程之测试条件_编程 _07

Linux Shell编程之测试条件_编程 _08

> 是否大于 < 是否小于

Linux Shell编程之测试条件_Shell_09

为什么a要小于b?因为字符在比较时,使用的是ASCII值

!= 不等于

下面这个比较符很少见哈,叫做模式匹配

左侧的字符串是否可以被右侧的匹配符匹配到

Linux Shell编程之测试条件_Linux_10

这样就算匹配上了。两次比对,第一次成功,第二次失败

如果要让第二次也成功可以这么写

Linux Shell编程之测试条件_Shell_11

-z "STRINGS" 判断STRINGS字符串是否为空

Linux Shell编程之测试条件_编程 _12

Linux Shell编程之测试条件_Linux_13Linux Shell编程之测试条件_Shell_14

-n "STRINGS"判断 STRINGS字符串是否不空

Linux Shell编程之测试条件_Linux_15

正因为变量name值为空,所以-n的返回值为1.

脚本返回值

默认是脚本中最后一条命令的状态返回值,管理员可以自定义脚本返回值

exit[n] n就是返回的值,shell脚本中遇到exit就会退出程序

文件测试

查看文件是否存在 -e

Linux Shell编程之测试条件_Linux_16

查看文件是否为块设备 -b

Linux Shell编程之测试条件_编程 _17

查看文件是否为字符设备文件

        -c

查看文件是否为普通文件

        -f

       

查看文件是否为目录文件

        -d

 

查看文件是否为符号链接文件

        -h/-L

 查看文件是否为管道文件

        -p

  

  查看文件是否为套接字文件

        -S

  

  查看文件是否存在且对当前用户可读

        -r

 

  查看文件是否存在且对当前用户可写

        -w

 

  查看文件是否存在且对当前用户可执行

        -x

 

  查看文件是否存在且拥有SGID

        -g

查看文件是否有SUID -u

Linux Shell编程之测试条件_Linux_18


查看文件是否有STICKY -k

Linux Shell编程之测试条件_Shell_19

查看文件是否存在而且有内容-s

Linux Shell编程之测试条件_Shell_20

有文件,但是文件里面没有内容

查看文件自上次读取后是否被修改过

-N

查看当前用户是否是指定文件的属主 -O

Linux Shell编程之测试条件_Linux_21


查看当前用户是否属于指定文件的属组 -G

Linux Shell编程之测试条件_Shell_22


双目测试

-ef  两个文件是否是指向同一个文件的两个硬链接文件

-nt 左边的文件是否比右边的文件新? 时间以最近一次修改时间为主

-ot 左边的文件是否比右边的文件旧? 时间以最近一次修改时间为主

Linux Shell编程之测试条件_编程 _23

Linux Shell编程之测试条件_Shell_24

aaaa.text 比fstab.1新

Linux Shell编程之测试条件_Linux_25

fstab.1比aaaa.text文件旧


组合测试

command1 && command 2

     如果第一个命令错了,就不运行第二个命令了

     如果第一个命令对了,第二个命令继续运行

command1 || command2

     如果第一个命令错了,第二个命令就继续运行

     如果第一个命令对了,就不运行第二个命令了。

Linux Shell编程之测试条件_Shell_26

Linux Shell编程之测试条件_Shell_27

&& 等同于-a 注意 如果是-a的参数那么表达式两边是单的中括号

Linux Shell编程之测试条件_Shell_28

Linux Shell编程之测试条件_Linux_29

|| 等同于 -o


非的命令

!command1

Linux Shell编程之测试条件_Shell_30

Linux Shell编程之测试条件_编程 _31