Linux Shell编程之测试条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux Shell编程之测试条件相关的知识,希望对你有一定的参考价值。

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

echo $?

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

测试表达式

数值比较

-eq 等于

技术分享图片

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


-ne 不等于

技术分享图片

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


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

技术分享图片

返回值为1 说明2等于2


-gt 左侧是否大于右侧

技术分享图片

左侧的2大于右侧的1

-lt 左侧是否小于右侧

技术分享图片

左侧2不小于右侧1

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


字符串比较

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

技术分享图片

技术分享图片

技术分享图片

> 是否大于 < 是否小于

技术分享图片

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

!= 不等于

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

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

技术分享图片

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

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

技术分享图片

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

技术分享图片

技术分享图片技术分享图片

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

技术分享图片

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

脚本返回值

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

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

文件测试

查看文件是否存在 -e

技术分享图片

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

技术分享图片

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

        -c

查看文件是否为普通文件

        -f

       

查看文件是否为目录文件

        -d

 

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

        -h/-L

 查看文件是否为管道文件

        -p

  

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

        -S

  

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

        -r

 

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

        -w

 

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

        -x

 

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

        -g

查看文件是否有SUID -u

技术分享图片


查看文件是否有STICKY -k

技术分享图片

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

技术分享图片

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

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

-N

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

技术分享图片


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

技术分享图片


双目测试

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

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

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

技术分享图片

技术分享图片

aaaa.text 比fstab.1新

技术分享图片

fstab.1比aaaa.text文件旧


组合测试

command1 && command 2

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

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

command1 || command2

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

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

技术分享图片

技术分享图片

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

技术分享图片

技术分享图片

|| 等同于 -o


非的命令

!command1

技术分享图片

技术分享图片



以上是关于Linux Shell编程之测试条件的主要内容,如果未能解决你的问题,请参考以下文章

一文彻底弄懂Linux-Shell编程

一文彻底弄懂Linux-Shell编程

Linux学习8之Shell编程--条件判断

Shell编程之条件语句

shell编程之条件语句

shell编程之条件测试