1.基本语法
[ condition ](注意condition前后要有空格)注意:条件非空即为true,[ 666 ]返回true,[] 返回false。
2. 常用判断条件
(1)两个整数之间比较= 字符串比较
-lt 小于(less than)
-le 小于等于(less equal)
-eq 等于(equal)
-gt 大于(greater than)
-ge 大于等于(greater equal)
-ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read)
-w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)
注意:任何命令的执行状态为0则为True,否则为False
3、案例
a、判断当前目录下某个文件是否存在
[ -e 文件名 ]
echo $?
b、判断当前文件是否存在并且是一个目录
[ -d 文件名 ]
echo $?
[root@mylinux2 shell]# [ 23 -lt 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 24]
-bash: [: 缺少 `]'
[root@mylinux2 shell]# [ 23 -le 24 ]
[root@mylinux2 shell]# echo $?
0
[root@mylinux2 shell]# [ 23 -le 22 ]
[root@mylinux2 shell]# echo $?
1
04_特殊变量-1.sh是否具有写权限
[root@mylinux2 shell]# [ -w 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0
04_特殊变量-1.sh是否具有可执行的权限
[root@mylinux2 shell]# [ -x 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1
04_特殊变量-1.sh是否是一个常规的文件(file)
[root@mylinux2 shell]# [ -f 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0
04_特殊变量-1.sh是否是一个目录
[root@mylinux2 shell]# [ -d 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
1
判断文件04_特殊变量-1.sh是否存在当前目录下
[root@mylinux2 shell]# [ -e 04_特殊变量-1.sh ]
[root@mylinux2 shell]# echo $?
0
(4)多条件判断
&& 表示前一条命令执行成功时,才执行后一条命令;
|| 表示上一条命令执行失败后,才执行下一条命令
逻辑与
a
[root@mylinux2 shell]# [ 23 -lt 24 ] && echo ok
ok
为什么打印ok?
因为条件表达式中23<24为True,而True 和 另一个条件不能确定整个结果,所以&&后面的echo ok要执行
b、
[root@mylinux2 shell]# [ 25 -lt 24 ] && echo ok
[root@mylinux2 shell]# echo $?
1
为什么执行不正确?
因为条件表达式25<24为False,而False && XXX,XXX为任意的逻辑运算都为False,所以后面的 echo ok 就不用执行了
逻辑或
[root@mylinux2 shell]# [ 25 -lt 24 ] || echo ok
ok
为什么打印ok?
因为条件表达式中25<24为False,而False 和 另一个条件不能确定整个结果,所以 || 后面的echo ok要执行
[root@mylinux2 shell]# [ 23 -lt 24 ] || echo ok
[root@mylinux2 shell]# echo $?
0
为什么执行正确?
因为条件表达式23<24为True,True || XXX,XXX不管是任何逻辑运算,其结果都为True,所以输出为0
4、if判断
1.基本语法
if [ 条件判断式 ];then
程序
fi
注意事项:
1)[ 条件判断式 ],中括号和条件判断式之间必须有空格
2)if后要有空格
脚本如下:
执行代码:
[root@mylinux2 shell]# bash 09if判断-1.sh 12
未成年
[root@mylinux2 shell]# bash 09if判断-1.sh 24
青年
[root@mylinux2 shell]# bash 09if判断-1.sh 33
中老年