Linux test条件测试

     Linux在用于条件判断的时候,通常使用test运算符。 它的常见形式是test condition

     其中用于文件状态判断的时候,常有以下判断方法:

     -d 目录    -s 文件长度大于0、非空     -f 正规文件       -w    可写

     -L  符号链接(ln命令创建出来的连接)      -u(文件有suid位设置)      -r 可读      -x 可执行

     例如:

  

ls -l  d
//输出-rw-rw-r-- 1 chenwu chenwu 19 06-03 21:38 d
test -r d
echo $?($?返回执行结果 0表示执行成功,其他的状态码都是错误结果)
//输出0
test -x d
echo $?
//输出1

   

    在用于联合判断的时候,常用的-a(相当于JAVA\C 的&& 或者Python的and) -o(相当于JAVA\C的||或者Python的or)

    例如:

  

test -x d -o -r d
echo $?
//输出0

test -x d -a -r d
echo $?
//输出1

   在判断字符串的时候,有以下几种表达方式:

   -z 判断空串(z表示zero)

   -n 判断非空串(n 表示not zero)

   = 判断字符串是否相等

   != 判断字符串是否不相等

   例如:

  

m=love
test -z m(判断m是否为空串)
echo $?//输出1(不是空串)
test -n m(判断m是否不是空串)
echo $?//输出0(的确不是空串)


   但是二者对于未定义的变量判断都是一致的

 

test -z $love 
echo $?

test -n $love
echo $?

这次两者都输出0(这个问题有待进一步研究)

  

    再来看下Linux对于数值类型的判断

    -eq 判断是否相等  (eq = equal)

    -ne 判断是否不相等 (ne = not equal)

    -lt 判断第一个数是否小于第二个数(lt = lower than)

    -gt 判断第二个数是否大于第二个数(gt = large than)

   -le 判断第一个数是否小于等于第二个数 (-le = lower or equal)

    -ge 判断第一个数是否大于第二个数 (-ge = large or equal)

     在与-a -o联合判断的时候,需要注意括号的数量(还有一点就是当你不确定数值与操作符是否应该有空格的时候,不妨加上空格,事实上除了赋值语句不能加空格之外,其他几乎所有的操作符和操作数之间都可以加空格)

    

m=15
n=13
test [ $m -lt $n ] -o [ $m -gt $n ]
//输出bash: test: too many arguments
//提示括号过多
//稍微改造下
test [ $m -lt $n  -o  $m -gt $n ]
//顺利的通过编译
echo $? 
//输出0

猜你喜欢

转载自bestchenwu.iteye.com/blog/1070749