条件判断的基本语法
![v2-c09a37c52a3814845260e64ab521c907_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-c09a37c52a3814845260e64ab521c907_b.jpg)
![v2-c09a37c52a3814845260e64ab521c907_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-c09a37c52a3814845260e64ab521c907_b.jpg)
1.Shell的条件判断的方式很怪,在中括号内的条件必须和中括号两侧有一个空格格式
-
-
- 2.then:写入条件为true的情况下的执行的语句
- 3.fi 为条件结束
-
if [ 条件 ]
then ...
fi
逻辑比较的运算符
-
-
- 整数比较
- 1.字符串比较 =
- 2.小于 -lt
- 3.小于等于 -le
- 4.等于 -eq
- 5.大于 -gt
- 6.大于等于 -ge
- 7.不等于 -ne
- 根据文件的执行权限比较
- -r 读权限
- -w 写权限
- -x 执行权限
- 判断文件是否存在
- -f 文件存在并且是一个常规的文件
- -e 文件存在
- -d 文件存在并是一个目录
- 整数比较
-
应用实例
-
-
-
- 1.比较相等的简单实例
-
-
![v2-c09a37c52a3814845260e64ab521c907_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic4.zhimg.com/v2-c09a37c52a3814845260e64ab521c907_b.jpg)
- 2.大于比较
![v2-5a72f49b6beca7808e290b9fb0505e42_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-5a72f49b6beca7808e290b9fb0505e42_b.jpg)
- 3.文件存在判断
-
- 文件的判断需要写上文件的路径
-
![v2-79eb2d7ffc013e3eb411e34201ec64c2_b.jpg](http://img-01.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-79eb2d7ffc013e3eb411e34201ec64c2_b.jpg)
- 4.判断文件的权限
-
- 判断文件的权限也是文件的路径
-
![v2-a352f6f18b412e2cf06bcc33a8ce917a_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-a352f6f18b412e2cf06bcc33a8ce917a_b.jpg)
Shell的多分支判断
-
-
- 语法格式
-
if [ 条件 ]
then
...
elif [ 条件 ]
...
fi
![v2-19d98a6a8694121c843d25313390c9ce_b.jpg](http://img-02.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic3.zhimg.com/v2-19d98a6a8694121c843d25313390c9ce_b.jpg)
case 分支选择
- (忍不住要吐槽语法的的怪异了)
- case分支选择和高级语言中的swuch分支选择一样的只是语法很怪异
- 语法格式
case 条件 in
"比对的条件")
程序
;;#表示结束一个分支
"比对条件")
程序
;;
*)#上面的条件都不匹配的时候执行
程序
;;
esac #代表分支结束
![v2-7b176094c2ae425d2a551bcc9087ea01_b.jpg](http://img-03.proxy.5ce.com/view/image?&type=2&guid=645a3df0-522f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-7b176094c2ae425d2a551bcc9087ea01_b.jpg)