shell 条件判断

shell 条件判断
在进行shell变量中,我们通常要进行一些判断操作:例:字符串之间的比较 数值之间的比较 文件夹存在性的判断,文件类型判断。

1 文件状态判断

命令使用方式:
test 条件 或 [ 条件 ] //使用中括号时,两边需加上空格
常用的测试文件状态的表达式如下图所示:

表达式

含义

表达式

含义
-d

目录

-L

符号链接
-s

文件长度大于0非空文件

-u

文件有suid位设置
-f

正规文件

-r

可读
-w

可写

-x

可执行

例:检测文件 test.c在当前用户模式下是否可写:
[root@localhost ~]#test -w help.c;echo $?
[root@localhost ~]#[ -w help.c ];echo $?

2 字符串测试

[root@localhost ~]#test 表达式 字符串 //检测是否是否为非空
[root@localhost ~]#test 字符串 表达式 字符串 //两字符串比较
[root@localhost ~]#[ 表达式 字符串 ]
[root@localhost ~]#[ 字符串 表达式 字符串 ]
表达式列表:

表达式

含义
=

两个字符串相等
!=

两个字符串不等
-z

空串
-n

非空串

例:
[root@localhost ~]#[ -z $a ];echo $?
[root@localhost ~]#[ $a != $b ];echo $?

注: mac os中测试都无法通过


3 数值比较

[root@localhost ~]#数值1 表达式 数值2
表达式列表

表达式

含义
-eq

数值相等
-ne

数值不相等
-gt

第一数大于第二个数
-lt

第一数小于第二个数
-le

第一数小于等于第二个数
-ge

第一个数大于等于第二个数

例:
[root@localhost ~]#unset a;unset b;a=10;b=11;[ $a -eq $b ];echo $? //两个数比较大小
1