一、问题
1.1、环境
电脑环境:Windows 10;
JDK环境: Jdk1.8;
Docker版本:Server Version: 19.03.3
1.2、问题
在Shell脚本语句中,我们肯定会遇到条件判断,那么shell的条件判断该如何编写呢?
二、解答
2.1、数值判断;
格式:
if
1、正确实例:
#!/bin/bash
正确实例截图:
![v2-4cae536c21a6acfddc8d6d0105a559b1_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-4cae536c21a6acfddc8d6d0105a559b1_b.jpg)
2、错误实例
#!/bin/bash
错误实例的截图:
![v2-09de2b1a04d93691348fc6898afe54e0_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic1.zhimg.com/v2-09de2b1a04d93691348fc6898afe54e0_b.jpg)
我们得出了完全相反的结论,然而,根据常识,我们明显知道,9不可能大于10的;那么,问题出在哪里呢?原来,双方括号【[[ 条件 ]]】如果要比较大小,必须使用转义的大鱼号,小于号,等于号;如上图中,不能直接使用大于号,而应该讲大于号换成【-gtl】;并且,双中括号内侧必须两内侧边空格,否则会报错;但是,如果使用双小括号,就可以不用空格,更简单明了; 将上面的语句改成下面的样子即可:
![v2-e259e037eacd3170c82a8588791688ce_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-e259e037eacd3170c82a8588791688ce_b.jpg)
关于小括号和中括号的用法,可以看下面的总结; 2.2、目录是否存在 目录的判断需要使用中括号,中括号里的逻辑运算符,可以总结如下:
- -f:判断文件是否存在;
- -d:判断目录是否存在;
- -eq:等于,整数比较;
- -ne:不等于,整数比较;
- -lt:小于;
- -gt:大于;
- -le:小于或等于;
- -ge:大于或等于;
- -a:and,表示并的关系;
- -o:or,或者,表示并的关系;
- -z:空字符串;
- !:非;
实例: 如果目录不存在,则创建目录;
#!/bin/bash
注意感叹号和-d之间有空格!!!
![v2-0bd560fd145b86fe7a25274fe16d9129_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-0bd560fd145b86fe7a25274fe16d9129_b.jpg)
2.3、测试脚本是否正确 格式:
/bin/bash -n fileExist.sh
如果没有问题,则会没有任何提示:
![v2-afac1e17bdc412e2177d2b59a953bb11_b.png](http://img-01.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-afac1e17bdc412e2177d2b59a953bb11_b.png)
如果有问题,则:
![v2-d4127de81d5499ce7374ff7ab77794e9_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-d4127de81d5499ce7374ff7ab77794e9_b.jpg)
(我这里多打了一个中括号);但是,这个方法只能检查格式错误,不能检查其他的错误,立刻如,如果我把中括号那里换成了1,则不会报错;
2.4、分数判断实例:
#!/bin/bash
截图:
![v2-d7d226eb64050607784b4031fae53ef2_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-d7d226eb64050607784b4031fae53ef2_b.jpg)
2.5、注意
1、小括号可以使用>,<,=;并且括号内外可以没有空格;
2、中括号括号内侧必须要有空格;
3、中括号不可以使用<,>,=;而必须使用转义的逻辑判断条件;
4、赋值号前后不能有空格;
本篇说明内容完毕;
三、总结
欢迎关注我的
CSDN博客: https://blog.csdn.net/River_Continent
微信公众号:幕桥社区
![v2-d298151facd0214ba1ad183606372162_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=3070ed31-532f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-d298151facd0214ba1ad183606372162_b.jpg)
知乎:张牧野, https://www.zhihu.com/people/zhang-mu-ye-37-76/activities
简书: https://www.jianshu.com/u/02c0096cbfd3