条件测试语法:
语法1:test <测试表达式> 这是利用test命令进行条件测试表达式的方法。
语法2:[ <测试表达式> ]:这是通过单括号进行条件测试表达式的方法,和test命令的用法相同,推荐使用的
语法3:[[ <测试表达式> ]]:这是通过[[]]进行条件测试表达式的方法,是比test和[]更新的语法格式
语法4:((<c测试表达式>)):这是通过(())进行条件表达式的方法,一般用于if语句里
针对上面的说明:
语法1和语法2是相同的,语法3是test的扩展。推荐使用语法2
在[[]]中可以使用通配符等进行模式匹配,这就是区别与其他几种语法格式的地方
&&,||,>,<等操作符可以应用与[[]]中,但不能应用与[]中,在[]中一般用-a,-o,-get(用于整数),-lt(用于整数)代替上面的操作符。
对于整数的关系运算符,也可以使用算术运算符(())
root@ubuntu:/home/xpg#test-f/home/xpg/match.sh&&echogood||echobad good
范例:使用-z测试一个字符串,如果字符串的长度为0则返回真,-n相反
root@ubuntu:/home/xpg#char=oldboy root@ubuntu:/home/xpg#test-z"$char"&&echo1||echo0 0 root@ubuntu:/home/xpg#char= root@ubuntu:/home/xpg#test-z"$char"&&echo1||echo0 1 root@ubuntu:/home/xpg#
[ ]和test性质一样,在工作中主要使用这种。
root@ubuntu:/home/xpg#[-f/home/xpg/match.sh]&&echo1||echo0 1 上下的性质是一样的 root@ubuntu:/home/xpg#[-f/home/xpg/match.sh]&&echo1 1 root@ubuntu:/home/xpg#[-f/home/xpg/match.sh]||echo0 root@ubuntu:/home/xpg#
由于test 表达式 和 [ ]是一样的,可以使用man test查看帮助的
root@ubuntu:/home/xpg# [[ -f /home/xpg/match.sh ]] && echo 1 || echo 1
1
[[ ]]和[ ]的区别在于[[ ]]可以使用通配符等进行模式匹配,并且&&,||,>,<等操作符可以应用在[[ ]]中,但不能应用在[ ],在[ ]中一般使用-a,-o,-gt,-lt代替上面的[[ ]].
文件测试表达式
先补充一点:
str1!=str2 当串str1和str2不等时为真 -nstr1 当串的长度大于0时为真(串非空) -zstr1 当串的长度为0时为真(空串) str1 当串str1为非空时为真 !str2当子串为空时为真 int1-eqint2 两数相等为真 int1-neint2 两数不等为真 int1-gtint2 int1大于int2为真 int1-geint2 int1大于等于int2为真 int1-ltint2 int1小于int2为真 int1-leint2 int1小于等于int2为真
-e :文件 文件存在则为真,和上面-d,-f的区别是不分辨是目录还是文件
f1 -nt f2, nt的全拼为newer than 文件f1比文件f2新则为真。
f1 -ot f2;-ot的全拼为older than 文件f1比文件f2旧则为真
使用-e和-d结合使用: root@ubuntu:/home/xpg#[-e/home/xpg/match.sh-a-d/home/xpg/match.sh]&&echo1||echo0 0
生产的启动脚本
例如:
root@ubuntu:/home/xpg#[-x/usr/bin/apache2]||exit5#简单的判断,如果这个文件不存在或者不能被执行,返回exit5 exit xpg@ubuntu:~$echo$? 5 xpg@ubuntu:~$
写出简单高效的测试文件
在做测试判断的时候,不一定非要按照“前面的操作成功了如何,否则如何”的方法,有时候直接部分判断,有时候看起来更加简单。
root@ubuntu:/home/xpg#[-xxpg]&&echo1 root@ubuntu:/home/xpg#[-xxpg]||echo1 1