条件判断通常用在Shell脚本中,比如实现“如果A目录不存在则创建A目录”这样的需求。对于要进行条件判断的数据类型通常有整数、字符串、文件三种。常用的条件判断表达式的书写方式有两种:
# test+表达式
# [ 表达式 ] #注意方括号两边都是有空格的
[root@iZ25aj1q2ovZ ~]# test $a -eq $b
[root@iZ25aj1q2ovZ ~]# [ $a -eq $b ]
一、对整数类型的数据进行条件判断,用于比较数字:
-eq:测试两个整数是否相等,如$a -eq $b,判断a和b两个变量的值是否相等,是的话$?返回值为0
-ne:测试两个整数是否不等,不等为真(即$?返回0)
-gt:测试一个数是否大于另一个数,大于为真,否则为假
-lt:测试一个数是否小于另一个数,小于为真,否则为假
-gt:测试一个数是否大于或等于另一个数
-le:测试一个数是否小于或等于另一个数
二、对文件类型的数据进行条件判断,用于测试文件属性或者文件类型:
-e:测试文件是否存在,如-e /etc/fstab
-f:测试是否为普通文件
-d:测试是否为目录文件
-w:测试当前用户是否对文件有写权限
-r:测试当前用户是否对文件有读权限
-x:测试当前用户是否对文件有执行权限
三、对字符串类型的数据进行条件判断,用于测试字符内容是否为正确的值(变量或字符串都要用双引号避免比如变量不存在的情况下报出的语法错误):
=:测试两边字符串是否相等,不可用于数字大小的比较,如果涉及到正则表达式那应该写为=~
-n:测试变量是否为空
-s :测试变量是否不空
!:对判断结果取反,如!=、! -d、! -f
if [ ! -d $DIR ];then
echo "$DIR not exists"
else
echo "$DIR already exists"
fi四、组合逻辑测试:
-a:逻辑与关系
-o:逻辑或关系
!: 非关系
if [ $# -gt 1 -a $# -le 5 ]
if [ $# -gt 1 ] && [ $# -le 5 ]