shell编程:test命令

Test命令:
语法:

test expression 或者 [expression](test命令对表达式进行测试,并且设置返回值。)
返回结果:true(0)、false(非零通常为1)

test命令能够测试的对象有:整数 、字符串、文件。

test命令被用来评估表达式并且产生返回值。它用参数组成逻辑表达式并且对表达式的返回值进行评估,test命令不会产生标准输出,你必须通过返回值来判断test命令的结果,如果表达式为真,返回值会为0,如果表达式为假,返回值为1。

test命令可以被单独使用,然后你能够看到返回值,但它用的最多的还是在if和while结构中用来提供条件流程控制。

test命令的也可以用[expression]来代替。这种方式可以提高可读性,特别是在处理数字或者字符串的时候。
注意:在"[“和”]"符号的周围必须要有空格。

test命令之数字
语法:

[ number relation number ] 通过关系运算符来对数字进行比较。
运算符:-lt 小于、-le 小于或者等于、-gt 大于、-ge 大于或者等于、-eq 等于、-ne 不等于

例子(假设X=3):

$ [ "$X" -lt 7]
$ echo $?
0

test命令能被用于比较两个整数之间的数字关系,通常用[…]语法来调用。test命令的返回值就能说明这个条件为真还是为假。

当test一个变量的值的时候,你应该防止变量不要为空值,例如:

$ [ $XX -eq 3]

sh: test:argument expected
如果变量XX在前面没有被赋值,XX的值会是NULL。当shell执行变量替代的时候,shell会试图执行如下语句:

[ -eg 3]

而这个语句不是一个完整的test语句,并且会导致一个语法错误。解决这个问题的一个简单的方法就是在被测试的变量的周围加上引号。

[ "$XX" -eq 3]

当shell执行变量替代的时候,shell会试图执行如下语句:
["" -eq 3]
这会确保至少有一个NULL值作为一个参数提供给这个test命令使用。
注意:作为一个通用的规则,你应该在所有的$变量加上双引号来避免shell发生不正确的变量的替代。

test命令-字符串
语法:

[ string1 = string2] 判断字符串是否相等
[ string1 !=string2] 判断字符串是否不等

例子:

$ X=abc 
$ [ "$X" = "abc"]
$ echo $?
0

test命令也能够用来计较两个字符串是否相等。
[…] 语法通常用作字符串的比较。你已经看到在[]周围必须要有空格,同时在操作符周围也必须要有空格存在。
字符串操作:

string1 = string2   如果string1等于string2就为真
string1 != string2   如果string1不等于string2就为真
-z string   如果string的长度为0就为真
-n string   如果string的长度为非零就为真
string   如果string的长度为非零就为真

为了防止变量中包含空白字符,这里引号同样也能够保护字符串的test。

test命令- 文件比较
语法:

test -option filename  通过选项对文件进行test

例子:

$ test -f funfile
$ echo $?
0

shell提供的一个有用的test特性是可以用它来test文件的特征,例如文件类型和许可权限。例如:

$ test -f filename    --如果文件存在并且是一个普通文件(不是目录或者设备文件),会返回真(0)。

test -s filename      --如果文件存在并且其字节数大于0,会返回真(0)。

其它还有许多有用的文件test方式,比如:
-r file           如果文件存在并且是可读的时候为真
-w file          如果文件存在并且是可写的时候为真
-x file           如果文件存在并且是可执行的时候为真
-d directory 目录存在并且是个目录的时候为真

test其他操作
语法:

-o   OR
-a   AND
\(  \)   GROUPING

例子:

$ [ "$ANS" = y -o "$ANS" = Y ]
$ [ "$NUM" -gt 10 -a "$NUM" -lt 20 ]

NOT操作符(!)被用作连接其他的操作符,特别是在文件test的时候用的很普遍。在!操作符和其他的操作符之间必须要有空格,例如:

test ! -d file
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值