Shell脚本语法 -- 条件测试:test 或 [ 命令

文章来自:

http://learn.akae.cn/media/ch31s05.html


 Shell脚本语法 之  条件测试:test 或[

命令test[ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:

$ VAR=2
$ test $VAR -gt 1
$ echo $?
0
$ test $VAR -gt 3
$ echo $?
1
$ [ $VAR -gt 3 ]
$ echo $?
1

虽然看起来很奇怪,但左方括号[ 确实是一个命令的名字,传给命令的各参数之间应该用空格隔开 ,比如,$VAR-gt3][ 命令的四个参数,它们之间必须用空格隔开。命令test[ 的参数形式是相同的,只不过test 命令不需要] 参数。以[ 命令为例,常见的测试命令如下表所示:

表 31.2. 测试命令

[ -d DIR ] 如果DIR 存在并且是一个目录则为真
[ -f FILE ] 如果FILE 存在且是一个普通文件则为真
[ -z STRING ] 如果STRING 的长度为零则为真
[ -n STRING ] 如果STRING 的长度非零则为真
[ STRING1 = STRING2 ] 如果两个字符串相同则为真
[ STRING1 != STRING2 ] 如果字符串不相同则为真
[ ARG1 OP ARG2 ] ARG1ARG2 应该是整数或者取值为整数的变量,OP-eq (等于)-ne (不等于)-lt (小于)-le (小于等于)-gt (大于)-ge (大于等于)之中的一个

和C语言类似,测试条件之间还可以做与、或、非逻辑运算:

表 31.3. 带与、或、非的测试命令

[ ! EXPR ] EXPR 可以是上表中的任意一种测试条件,!表示逻辑反
[ EXPR1 -a EXPR2 ] EXPR1EXPR2 可以是上表中的任意一种测试条件,-a 表示逻辑与
[ EXPR1 -o EXPR2 ] EXPR1EXPR2 可以是上表中的任意一种测试条件,-o 表示逻辑或

例如:

$ VAR=abc
$ [ -d Desktop -a $VAR = 'abc' ]
$ echo $?
0

注意,如果上例中的$VAR 变量事先没有定义,则被Shell展开为空字符串,会造成测试条件的语法错误(展开为[ -d Desktop -a = 'abc' ] ),作为一种好的Shell编程习惯,应该总是把变量取值放在双引号之中(展开为[ -d Desktop -a "" = 'abc' ] ):

$ unset VAR
$ [ -d Desktop -a $VAR = 'abc' ]
bash: [: too many arguments
$ [ -d Desktop -a "$VAR" = 'abc' ]
$ echo $?
1



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值