分类: LINUX
2015-06-11 15:51:42
测试的标志 | 代表意义 |
根据个文件名的“文件类型”判断:如test -e filename表示存在否 | |
-e | 该文件名是否存在(常用) |
-f | 该文件名是否存在且为文件(file)(常用) |
-d | 该文件名是否存在且为目录(directory)(常用) |
-b | 该文件名是否存在且为一个block device设备 |
-c | 该文件名是否存在且为一个character device设备 |
-S | 该文件名是否存在且为一个Socket文件 |
-p | 该文件名是否存在且为一个FIFO(pipe)文件 |
-L | 该文件名是否存在且为一个连接文件 |
根据文件的权限检测:如test -r filename表示可读否(但root权限常有例外) | |
-r | 检测该文件名是否存在且具有“可读”权限 |
-w | 检测该文件名是否存在且具有“可写”权限 |
-x | 检测该文件名是否存在且具有“可执行”权限 |
-u | 检测该文件名是否存在且具有“SUID”属性 |
-g | 检测该文件名是否存在且具有“SGID”属性 |
-k | 检测该文件名是否存在且具有“Sticky bit”属性 |
-s | 检测该文件名是否存在且具有“非空白文件” |
两个文件之间的比较,如:test file1 -nt file2 | |
-nt | (newer than)判断file1是否比file2新 |
-ot | (older than)判断file1是否比file2旧 |
-ef | 判断file1与file2是否为同一文件,可用在判断hard link的判定上。主要意义在于判定两个文件是否均指向同一个inode。 |
两个整数之间的判定,例如test n1 eq n2 | |
-eq | 两数值相等(equal) |
-ne | 两数值不等(not equal) |
-gt | n1大于n2(greater than) |
-lt | n1小于n2(less than) |
-ge | n1大于等于n2(greater than or equal) |
-le | n1小于等于n2(less than or equal) |
判断字符串的数据 | |
test -z string | 判定字符串是否为0,若string为空字符串,则为true |
test -n string | 判定字符串是否为非0,若string为空字符串,则为false,注:-n也可省略 |
test str1=str2 | 判定str1是否等于str2,若相等,则回传true |
test str1!=str2 | 判定str1是否不等于str2,若相等,则回传false |
多重条件判定,例如:test -r filename -a -xfilename | |
-a | 两个条件同时成立!例如test -r file -a -x file,则file同时具有r与x权限时,才回传true |
-o | 任何一个条件成立!例如test -r file -o -x file,则file具有r或x权限时,才回传true |
! |
反向状态,如test ! -x file,当file不具有x是,回传true |
通常用 [ ] 来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f somefile ] :判断是否是一个文件
[ -x /bin/ls ] :判断/bin/ls是否存在并有可执行权限
[ -n $var ] :判断$var变量是否有值
[ $a = $b ] :判断$a和$b是否相等
test命令用法:
1)判断表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的转载请注明文章来