shell中的比较运算符:
-eq //等于
-ne //不等于
-gt //大于 (greater)
-lt //小于 (less)
-ge //大于等于
-le //小于等于
命令的逻辑关系:
在 linux 中命令执行状态:0 为真,其他为假 。
$? 是显示最后命令的退出状态,0 表示没有错误,其他(比如1等)表示有错误
eg:
shell中的逻辑运算符:
逻辑与: &&
第一个条件为假时,第二个条件不用再判断,最终结果已经有;
第一个条件为真时,第二个条件必须得判断。
逻辑或: ||
逻辑非: !
举例1:
echo $isDeploy
if [ $isDeploy == true ]
then echo 部署
else
echo 不部署
fi
效果:
举例2:
[root@app ~]# response_code=$(curl -I -s www.baidu.com -w %{http_code}|tail -n1)
[root@app ~]# echo ${response_code}
200
[root@app ~]# if [ $response_code == 200 ];then echo true; else echo false; fi
true
[root@app ~]# if [ $response_code == 201 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code -eq 201 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code -eq 200 ];then echo true; else echo false; fi
true
注意点:
1. shell中如果是等于、不等于,既可以用 -eq、-ne (外面需要加中括号),也可以用 == 、!=(外面加中括号或双括号都行)
[root@app ~]# response_code=$(curl -I -s www.baidu.com -w %{http_code}|tail -n1)
[root@app ~]# echo ${response_code}
200
// 等于
[root@app ~]# if [ $response_code -eq 200 ];then echo true; else echo false; fi
true
[root@app ~]# if [ $response_code -eq 201 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code == 200 ];then echo true; else echo false; fi
true
[root@app ~]# if [ $response_code == 201 ];then echo true; else echo false; fi
false
[root@app ~]# if (( $response_code == 201 ));then echo true; else echo false; fi
false
[root@app ~]# if (( $response_code == 200 ));then echo true; else echo false; fi
true
// 不等于
[root@app ~]# if [ $response_code -ne 200 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code -ne 201 ];then echo true; else echo false; fi
true
[root@app ~]# if [ $response_code != 200 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code != 201 ];then echo true; else echo false; fi
true
[root@app ~]# if (( $response_code != 200 ));then echo true; else echo false; fi
false
[root@app ~]# if (( $response_code != 201 ));then echo true; else echo false; fi
true
2. shell中如果是大于,大于等于,小于,小于等于,用 -gt, -ge,-lt,-le 的话,则需要加中括号。
[root@app ~]# response_code=$(curl -I -s www.baidu.com -w %{http_code}|tail -n1)
[root@app ~]# echo ${response_code}
200
[root@app ~]# if [ $response_code -gt 200 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code -ge 200 ];then echo true; else echo false; fi
true
[root@app ~]# if [ $response_code -lt 200 ];then echo true; else echo false; fi
false
[root@app ~]# if [ $response_code -le 200 ];then echo true; else echo false; fi
true
3. shell中大于、大于等于,小于,小于等于想用 >,>=,<,<=,则需要加双括号,而不是中括号
[root@app ~]# response_code=$(curl -I -s www.baidu.com -w %{http_code}|tail -n1)
[root@app ~]# echo ${response_code}
200
[root@app ~]# if (( $response_code > 200 ));then echo true; else echo false; fi
false
[root@app ~]# if (( $response_code >= 200 ));then echo true; else echo false; fi
true
[root@app ~]# if (( $response_code < 200 ));then echo true; else echo false; fi
false
[root@app ~]# if (( $response_code <= 200 ));then echo true; else echo false; fi
true