shell编程-条件测试语句与if语句

shell编程-条件测试语句与if语句

test

[ ]

1.文件测试

​ 文件测试是指根据给定的路径名称,判断是文件还是目录,判断是具有读写执行的权限,常用的选项如下:

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

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

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

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

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

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

[root@bigdata111 shell]# ls /media/
[root@bigdata111 shell]# [ -d /media/cdrom ]
[root@bigdata111 shell]# echo $?
1
[root@bigdata111 shell]# [ -d /media/cdrom ]
[root@bigdata111 shell]# [ ! -d /media/cdrom ]
[root@bigdata111 shell]# echo $?
0
[root@bigdata111 shell]# 

[root@bigdata111 shell]# [ ! -d /media/cdrom ] && mkdir -p /media/cdrom
[root@bigdata111 shell]# ls /media/
cdrom
[root@bigdata111 shell]# [ -d /media/cdrom ] && echo "File ok"
File ok
[root@bigdata111 shell]# [ ! -d /media/cdrom ] && echo "File ok"
[root@bigdata111 shell]# 

2.多重条件判定

2.1逻辑测试

逻辑测试是指判断两个或多个条件之间的依赖关系,当系统取决与多个条件时,根据这些条件或其中的一个条件成立等情况的过程,

常用的逻辑测试

&&: 逻辑与,"并且而且"的意思 满足两个条件

||:逻辑或,"或则"的意思 满足两个条件中的一个

!: 逻辑否

[root@bigdata111 shell]# A=10
[root@bigdata111 shell]# [ $A -gt 1] && echo yes
bash: [: missing `]'
[root@bigdata111 shell]# [ $A -gt 1 ] && echo yes
yes
[root@bigdata111 shell]# [ $A -gt 1 ] || echo yes
[root@bigdata111 shell]# [ ! $A -gt 1 ] || echo yes
yes
[root@bigdata111 shell]# 

2.2数值比较

数值的比较指的时根据给定的两个整数判断第一个数值与第二个数值的关系

-eq: 等于(Equal) Eq

-ne: 不等于(Not Equal)

-gt: 大于(Greater Then)

-lt:小于或等于(Lesser or Equal)

-ge: 大于或等于(Greater or Equal)

格式 [ 数值1 操作符 数值2 ]

判断当前用户数
[root@bigdata111 ~]# users=$(who | wc -l)
[root@bigdata111 ~]# echo $users
1
[root@bigdata111 ~]# [ $users -gt 1] && echo $users
bash: [: missing `]'
[root@bigdata111 ~]# [ $users -gt 1 ] && echo $users
[root@bigdata111 ~]# [ $users -eq 1 ] && echo $users
1
[root@bigdata111 ~]# [ $users -eq 5 ] && echo $users
[root@bigdata111 ~]# [ ! $users -eq 5 ] && echo $users
1
[root@bigdata111 ~]# [ $users -lt 5 ] && echo $users
1
[root@bigdata111 ~]# [ $users -lt 1 ] && echo $users
[root@bigdata111 ~]# 

2.3字符串比较

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

= 字符串内容相同

!=字符串内容不行同

-z字符串内容为空

实例1:判断当前字符集

[root@bigdata111 shell]# sh -x lang.sh 	#脚本跟踪
+ echo en_US.UTF-8
en_US.UTF-8
+ '[' en_US.UTF-8 '!=' en.US ']'
+ echo en_US.UTF-8
en_US.UTF-8
+ '[' en_US.UTF-8 = en.US ']'
[root@bigdata111 shell]# sh lang.sh 	#输出
en_US.UTF-8
en_US.UTF-8
[root@bigdata111 shell]# echo $LANG 
en_US.UTF-8
[root@bigdata111 shell]# 

实例2:判断是否为空

[root@bigdata111 shell]# a=
[root@bigdata111 shell]# echo $a

[root@bigdata111 shell]# [ $a -z ] && echo "ok !"
bash: !": event not found
[root@bigdata111 shell]# [ $a -z ] && echo "ok"
ok
[root@bigdata111 shell]# [ ! $a -z ] && echo "ok"
[root@bigdata111 shell]# [ ! $a -z ] || echo "ok"
ok
[root@bigdata111 shell]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值