test测试功能

对于要测试系统上面某些文件或其相关属性时,可以使用test进行测试,test会根据相关功能返回True或False。

测试文件类型test -e filename

测试功能

意义

-e

该文件是否存在

-f

该文件名是否存在且为文件

-d

该文件名是否存在且为目录

-b

该文件名是否存在且为一个block device设备

-c

该文件名是否存在且为一个character device设备

-S

该文件名是否存在且为一个Socket文件

-p

该文件是否存在且为一个FIFO(pipe)文件

-L

该文件名是否存在且为一个链接文件

测试文件权限test -r filename

测试功能

意义

-r

该文件是否存在且有可读权限

-w

该文件是否存在且有可写权限

-x

该文件是否存在且有可执行权限

-u

该文件是否存在且具有SUID属性

-g

该文件是否存在且具有SGID属性

-k

该文件是否存在且具有Sticky bit属性

-s

该文件是否存在且为非空白文件

两个文件之间比较test file1 -nt file2

测试功能

意义

-nt

(new than)判断file1是否比file2新

-ot

(old than)判断file1是否比file2旧

-ef

判断file1与file2为同一个文件

两个整数之间判定test n1 -eq n2

测试功能

意义

-eq

两个数值是否相等

-ne

两个数值是否不等

-gt

n1是否大于n2

-lt

n1是否小于n2

-ge

n1是否大于等于n2

-le

n1是否小于等于n2

判断字符串数据test -z string

测试功能

意义

-z

判断字符串是否为空,若是则返回true

-n

判断字符串是否为非空,若是则返回true

test str1 == str2

判断两字符串是否相等

test str1 != str2

判断两字符串是否不等

多重判断test -r filename -a -x filename

测试功能

意义

-a

是否同时成立,test -r file -a -x file,file同时具备r与x权限时,返回true

-o

test -r file -o -x file是否有r或x权限,两个有一个成立,就返回true

!

非选项,test ! -x file,不具备x权限,返回true

判断符号[ ]

除了上面使用到的test,我们也可以使用[ ]进行数据测试判断。使用[ ]是在里面的每一个元素必须要使用空格来分隔,变量必须要使用" “括起来,常量需要使用’ '或” "括起来。
例:
测试${MAIL}内容是否为空

[ -z "${MAIL}" ] && echo 'y' || echo 'n'

输入内容判断Yy or Nn

read -p "please input (y or n): " yn
[ "${yn}" == "Y" -o "${yn}" == "y" ] && echo "OK, you choice y" && exit 0
[ "${yn}" == "N" -o "${yn}" == "n" ] && echo "OK, you choice n" && exit 0
echo "We don't know what your choice is."