条件测试类型
整数测试
字符测试
文件测试
条件测试的表达式
【 expression 】
【【 expression 】】
test expression
实例:
[root@slave ~]# [ 2 -gt 1 ]
[root@slave ~]# echo $?
0
[root@slave ~]# [[ 1 -gt 2 ]]
[root@slave ~]# echo $?
1
整数测试(双目)
-eq //测试两个整数是否相等
-ne //测试两个整数是否不等
-gt //测试一个数是否大于另一个数
-lt //测试一个数是否小于另一个数
-ge //大于或等于
-le //小于或等于
字符测试
== //等值比较,检查==两边的内容是否一致,==两边都要有空格
!= //检查两边内容是否不一致,不一致为真,一致为假
=~ //左侧字符串是否能够被右侧的PATTERN所匹配到。此表达式应用于双中括号[[]]中
-z "string" //测试指定字符串是否为空,空则为真,不空则为假
-n "string" //测试指定字符串是否不空,不空则为真,空则为假
文件测试
//存在性测试:
-e //测试文件是否存在
//存在性及类别测试:
-b //测试文件是否为块设备文件
-c //测试文件是否为字符设备文件
-f //测试文件是否为普通文件
-d //测试指定路径是否为目录
-h //测试文件是否为符号链接文件
-L //测试文件是否为符号链接文件
-p //测试文件是否为命名管道文件
-S //测试文件是否为套接字文件
//文件权限测试:
-r //测试当前用户对指定文件是否有读权限
-w //测试当前用户对指定文件是否有写权限
-x //测试当前用户对指定文件是否有执行权限
//文件特殊权限测试:
-g //测试文件是否有sgid权限
-u //测试文件是否有suid权限
-k //测试文件是否有sticky权限
//文件大小测试:
-s //测试文件是否非空
//文件是否打开测试:
-t fd //fd表示的文件描述符是否已经打开且与某终端相关
//双目测试:
file1 -ef file2 //测试file1与file2是否指向同一个设备上的相同inode,说白点就是两者是不是同一个文件
file1 -nt file2 //测试file1是否比file2新
file1 -ot file2 //测试file1是否比file2旧
//无分类:
-N //测试文件自从上一次被读取之后是否被修改过
-O //测试文件是否存在并且被当前用户拥有
-G //测试文件是否存在并且默认组是否为当前用户组
组合测试条件
-a //与关系
-o //或关系
! //非关系
[ $# -gt 1 -a $# -le 3 ]
[ $# -gt 1 ] && [ $# -le 3 ]
条件判断,控制结构
-
单分支if语句
if 判断条件; then statement1 statement2 ...... fi
-
双分支if语句
if 判断条件; then statement1 statement2 ...... else statement3 statement4 ...... fi
-
多分支if语句
if 判断条件1; then statement1 statement2 ...... elif 判断条件2; then statement3 statement4 ...... else statement5 statement6 ...... fi