Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,返回值为0则成功,非0表示失败或异常
1.test命令
测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ]
2.文件测试
格式:[ 操作符 文件或目录 ]
-d:测试是否为目录
-e:测试目录或文件是否存在
-f:测试是否为文件
-r:测试当前用户是否有权限读取
-w:测试当前用户是否有权限写入
-x:测试是否设置有可执行权限
检测 media/cdrom目录是否存在
[root@CentOS6-node1 ~]# [ -d /media/cdrom ]
[root@CentOS6-node1 ~]# echo $?
1
[root@CentOS6-node1 ~]# [ -d /media/cdrom/Server ] && echo "YES" //无输出表示目录不存在
//输出“YES”表示存在
3.整数值比较
格式:[ 整数1 操作符 整数2
-eq:第一个数等于第二个数
-ne:第一个数不等于第二个数
-gt:第一个数大于第二个数
-lt:第一个数小于第二个数
-le:第一个数小于或等于第二个数
-ge:第一个数大于或等于第二个数
[root@localhost ~]# who | wc -l
7
[root@localhost ~]# [ $(who | wc -l) -gt 5 ] && echo "Too many." //用户是否>5
Too many.
[root@localhost ~]# [ $(who | wc -l) -ge 10 ] && echo "> = 10."
[root@localhost ~]# FreeCC=$(free -m | grep "cache:" | awk '{print $4}')
[root@localhost ~]# [ $FreeCC -lt 1024 ] && echo ${FreeCC}MB
864MB //空闲内存是否<1024MB
4.字符串比较
=:第一个字符串与第二个字符串相同
!:第一个字符串与第二个字符串不相同
-z:检查字符串是否为空
[root@CentOS6-node1 /]# echo $LANG
zh_CN.UTF-8 //查看当前的语言环境
[root@CentOS6-node1 /]# [ $LANG != "en.US" ] && echo "Not en.US"
Not en.US //字符串测试结果(不等于)
5.逻辑测试
&&:逻辑与,表示‘而且’ // test –a 前面执行成功才能执行后边
||:逻辑或,表示‘或者’ // test –o 前面执行成功则后面不执行,失败则执行后面
!: 逻辑否,表示‘不’ //
6.单分支if语句
If 条件测试操作
then
命令序列
fi
7. 双分支if语句
If 条件测试操作
then
命令序列1
else
命令序列2
fi
8.多分支if语句
If 条件测试操作1
then
命令序列1
elif条件测试操作2
命令序列2
else
命令序列3
fi