Shell脚本:条件判断

2022/1/30 7:12:25

本文主要是介绍Shell脚本:条件判断,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

7、条件判断

条件判断语法格式

格式1:test 条件表达式
格式2:[ 条件表达式 ]     #注意空格
格式3:[[条件表达式]]     #支持正则表达式

条件判断的相关参数

问:你要判断什么?

答:我要判断文件类型,判断文件新旧,判断文件是否存在,判断字符串是否相等。。。。。

判断文件类型

红色字为重点,最常用

判断参数含义
-e判断文件是否存在(任何类型文件)
-f判断文件是否存在,并且是一个普通文件
-d判断文件是否存在,并且是一个目录
-L判断文件是否存在,并且是一个软连接文件
-b判断文件是否存在,并且是一个块设备文件
-S判断文件是否存在,并且是一个套接字文件
-c判断文件是否存在,并且是一个字符设备文件
-p判断文件是否存在,并且是一个命名管道文件
-s判断文件是否存在,并且是一个非空文件(有内容)

举例说明:判断文件是否存在?(重点)

[root@localhost ~]# touch pokes.txt
[root@localhost ~]# test -e pokes.txt 
[root@localhost ~]# echo $?
0
[root@localhost ~]# test -e pokessss.txt
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -e pokes.txt ]     #中括号也是可以的,脚本中经常是使用中括号,记得括号两端的空格不能少
[root@localhost ~]# echo $?
0

判断文件权限

红色字为重点,最常用

测试选项作用
-r 文件判断该文件是否存在,并且是否该文件拥有读的权限,有读权限为真
-w 文件判断该文件是否存在,并且是否该文件拥有写的权限,有写权限为真
-x 文件判断该文件是否存在,并且是否该文件拥有执行权限,有执行权限为真
-u 文件判断该文件是否存在,并且是否该文件拥有SUID权限,有SUID权限为真
-g 文件判断该文件是否存在,并且是否该文件拥有SGID权限,有SGID权限为真
-k 文件判断该文件是否存在,并且是否该文件拥有SBit权限,有SBit权限为真

举例说明:判断文件否有写和执行的权限?

[root@localhost ~]# ll
总用量 4
-rw-------. 1 root root 1241 9月  20 2020 anaconda-ks.cfg
-rw-r--r--. 1 root root    0 1月  28 10:51 pokes.txt
[root@localhost ~]# [ -w pokes.txt ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ -x pokes.txt ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# 

两个文件之间比较(新旧)

选项作用
文件1 -nt 文件2判断文件1的修改时间是否比文件2的新,如果新则为真
文件1 -ot 文件2判断文件1的修改时间是否比文件2的旧,如果旧则为真
文件1 -ef 文件2判断文件1和文件2的Inode号是否一致,如果一致则为真。可以理解为两个文件是否为同一个文件,这个判断用于判断硬链接是很好的方法。

两个整数之间的比较

红色字为重点,最常用

测试选项作用
整数1 -eq整数2判断整数1是否和整数2相等,相等即为真
整数1 -ne整数2判断整数1是否和整数2不相等,不相等为真
整数1 -gt整数2判断整数1是否大于整数2,大于为真
整数1 -lt整数2判断整数1是否小于整数2,小于为真
整数1 -ge整数2判断整数1是否大于等于整数2,大于等于为真
整数1 -le整数2判断整数1是否小于等于整数2,小于等于为真

举例说明:判断两个整数是否相等?

[root@localhost ~]# [ 23 -eq 24 ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ 24 -eq 24 ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# 

字符串的判断

选项作用
-z 字符串判断字符串是否为空,为空返回为真
-n 字符串判断字符串是否非空,非空返回为真
字符串1==字符串2 (两个等号)判断字符串是否相等,相等返回为真
字符串1!==字符串2 (两个等号)判断字符串是否不相等,不相等返回为真

举例说明:判断两个字符串是否相等?(重点)

[root@localhost ~]# [ "aa" == "aa" ]      #注意字符串,等号两端都有空格
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ "aa" == "bb" ]
[root@localhost ~]# echo $?
1

多重条件判断

选项作用
判断1 -a 判断2逻辑与,判断1和判断2都成立,最终的结果才为真
判断1 -o 判断2逻辑或,判断1和判断2有一个成立,最终的结果就为真
!判断逻辑非,使原始的判断式取反

举例说明:判断11是否存在,再判断11是否大于23?

[root@localhost ~]# [ -n 11 -a 11 -gt 23 ]    #判断11是否存在,再判断11是否大于23,整数肯定是存在的。
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -n 11 -a 11 -gt 9 ]
[root@localhost ~]# echo $?
0


这篇关于Shell脚本:条件判断的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程