1、条件测试
条件测试test和[
命令test和[都可以用了测试一个条件是否成立,如果测试的结果为真,那么exit status 为0,如果测试结果为假,则exit status 为1,(shell脚本中成立用0表示,不成立用1表示),例如比较两个数的大小
#!/bin/bash
val=10
[ $val -gt 5 ]
echo $?
test $val -gt 5
echo $?
[ $val -gt 20 ]
echo $?
test $val -gt 20
echo $?
输出结果:
根据结果可以看出test和[都可以测试一条命令的成立性,成功返回0,失败返回1;
测试命令:
[ -d DIR ] : 如果DIR存在并且是⼀一个⽬目录则为真
[ -f FILE ] : 如果FILE存在且是⼀一个普通⽂文件则为真
[ -z STRING ] : 如果STRING的长度为零则为真
[ -n STRING ] : 如果STRING的长度⾮非零则为真
[ STRING1 = STRING2 ] : 如果两个字符串相同则为真
[ STRING1 != STRING2 ] : 如果字符串不相同则为真
[ ARG1 OP ARG2 ] : ARG1和ARG2应该是整数或者取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的⼀一个 (整数判断和C语⾔言有很大差别)。
和C语言类似,测试条件之间还可以做与、或、非逻辑运算:
带与、或、非的测试命令
[ ! EXPR ] : EXPR可以是上表中的任意⼀一种测试条件,!表⽰示逻辑反
[ EXPR1 -a EXPR2 ] : EXPR1和EXPR2可以是上表中的任意⼀一种测试条件,-a表⽰示逻辑 与
[ EXPR1 -o EXPR2 ] : EXPR1和EXPR2可以是上表中的任意⼀一种测试条件,-o表⽰示逻辑 或
注意:在shell中入股一个变量不赋初始值,那么解释器就会将他解成一条空的字符串,在有些情况下会解释错误,在shell下,