test命令学习以及总结

今天我们来学习下test命令,参考文档:man test和info test (这两个真是个好东东!!!)

1.test命令是做什么的?
test命令是用来检查文件(类型或权限等等)以及比较值(可以是字符串也可以是数值)的工具;

2.test命令一般形式:

test EXPRESSION(表达式)

若表达式为真,test返回0;
若表达式为假,test返回1;
若命令出错,test返回2;
若表达式省略,test默认返回1;


我们先看几个例子,感性认识下


3.我们详细看下test命令的比较参数
a.字符串比较:
-n STRING  # 若STRING长度>0返回true
-z STRING  # 若STRING长度==0返回true
STRING1 = STRING2  # 若STRING1与STRING2值相同返回true(ps:也可以使用==)
STRING1 != STRING2 # 若STRING1与STRING2值不同返回true



上图使用了逻辑运算符||和&& ,对于&&只有当左边的命令返回true才会执行右边的命令,而对于||只有左边的命令返回false,才会执行右边的命令

b.数值(整数)比较:
INTEGER1 -eq INTEGER2 # 若数值1等于数值2,返回true
INTEGER1 -ne INTEGER2 # 若数值1不等于数值2,返回true
INTEGER1 -ge INTEGER2 # 若数值1>=数值2,返回true
INTEGER1 -gt INTEGER2 # 若数值1>数值2,返回true
INTEGER1 -le INTEGER2 # 若数值<=2,返回true
INTEGER1 -lt INTEGER2 # 若数值1<数值2,返回true



c.文件比较(参数较多,这里指列举部分)
-e FILE # 存在一个名为FILE的文件或是目录
-f FILE # 存在一个名为FILE的文件
-d FILE # 存在一个名为FILE的目录



d.多个表达式
之前所说的例子都是指测试一个表达式条件,但是有时候我们需要测试多个表达式,这时候我们可以使用-a和-o选项:
EXPRESSION1 -a EXPRESSION2 # 只有当两个表达式都为true时,test命令才返回ture
EXPRESSION1 -o EXPRESSION2 # 只要两个表达式中任一一个返回true时,test命令就返回ture



5.test命令的另一种形式:
通常我们可以使用[ expression ] 来代替 test expression 注意:[ ]两边一定要保留空格([ 是一个命令,后面的expression是参数,所以要用空格隔开)



这里我也终于明白shell脚本中 if [ -d "/etc" ]; 是怎么一回事情了,和我们程序中if(...) 括号的含义是完全不同的;

猜你喜欢

转载自diaocow.iteye.com/blog/1629868