1.test命令是什么?
test时shell的内置命令,用来检测某个条件是否成立。
它通常和if语句一起使用,,大部分if语句都依赖test。test命令有很多选项,可以进行数值,字符串还有文件三个方面的检测。
它的用法为:
test expression #当test 判断expression成立时,退出状态为 0,否则为非0。
test命令可以缩写成 [] ,用法为 [ expression ] ,里面的空格不能丢。
2.数值比较
n1 -eq n2 #检查n1是否等于n2
n1 -ne n2 #检查n1是否与n2不等
n1 -ge n2 #检查n1是否大于等于n2
n1 -gt n2 #检查n1是否大于n2
n1 -le n2 #检查n1是否小于等于n2
n1 -lt n2 #检查n1是否小于n2
如图:
3.字符串比较
str1 = str2 #检查str1是否和str2相同
str1 != str2 #检查str1是否和str2不同
str1 < str2 #检查str1是否比str2小
str1 > str2 #检查str1是否和str2是否比str2大
-n str1 #检查str1长度是否为非0
-z str1 #检查str1长度是否为0
如图:
注意:这里的 > 必须转义,不然系统会以为是重定向
注意:未初始化或者未定义的字符默认为空
3.文件比较
-d file #检查file是否存在并是一个目录
-e file #检查file是否存在
-f file #检查file是否存在并是一个文件
-r file #检查file是否存在并可读
-w file #检查file是否存在并可写
-x file #检查file是否存在并可执行
-s file #检查file是否存在并非空
-0 file #检查file是否存在并属当前用户所有
-G file #检查file是否存在并且默认组与当前用户相同
file1 -nt file2 #检查file1是否比file2新
file1 -ot file2 #检查file1是否比file2旧
如图:
检查是否是目录:
检查目录是否存在并且目录中某个文件是否是文件(这句话感觉怪怪的~)
检查某路径下的某文件是否可读(嵌套使用)