Java充电社
专辑
博文
联系我
本人继续续收门徒,亲手指导
Shell专题第6篇:条件判断
相关专辑:
Shell专题
<div style="display:none"></div> ## 6.1、语法 (1)test condition (2)[ condition ]:注意condition前后要有空格 注意: 条件非空即为 true, [ atguigu ]返回 true, [ ] 返回 false。 ## 6.2、常用判断条件 ### 6.2.1、两个字符串之间比较 > 注意:如果是字符串之间比较,用等号“=”判断相等,用“!=”判断不等,=和!=前后都要有空格 | 语法 | 说明 | | ----------------- | ------------------------------------------------ | | [ $a = $b] | 把变量a和b都作为字符串,来判断这俩变量是否相等 | | [ $a != $b] | 把变量a和b都作为字符串,来判断这俩变量是否不相等 | | [ $a = "ready" ] | 判断变量a是否等于字符串“ready” | ### 6.2.2、两个整数之间比较 > 下面的变量\$a和\$b也可以是常量 | 语法 | 说明 | | -------------- | ------------------------- | | [ $a -eq $b] | 判断a=b(equal) | | [ $a -ne $b] | 判断a!=b(not equal) | | [ $a -lt $b] | 判断a<b(less than) | | [ $a -le $b] | 判断a<=b(less equal) | | [ $a -gt $b] | 判断a>b(greater than) | | [ $a -ge $b] | 判断a>=b(greater equal) | ### 6.2.3、按照文件权限进行判断 | 语法 | 说明 | | ----------- | ------------------------ | | [ -r 文件 ] | 判断文件是否有可读权限 | | [ -w 文件 ] | 判断文件是否有可写权限 | | [ -x 文件 ] | 判断文件是否有可执行权限 | ### 6.2.4、按照文件类型进行判断 | 语法 | 说明 | | ----------- | ------------------------------------ | | [ -e 文件 ] | 判断文件是否存在 | | [ -f 文件 ] | 文件存在并且是一个常规的文件(file) | | [ -d 文件 ] | 文件存在并且是一个目录(dirctory) | ## 6.3、使用$?获取条件判断的结果,0:表示true,1:表示false > shell中的条件判断返回值比较特殊,0:表示true,1:表示false ```shell #下面判断2>1 [root@test001 ~]# [ 2 -gt 1 ] #使用$?获取上面判断的结果,输出结果为0,表示true [root@test001 ~]# echo $? 0 #判断2<1,结果为1,表示false [root@test001 ~]# [ 2 -lt 1 ] [root@test001 ~]# echo $? 1 ``` ## 6.3、案例 ### (1)整数判断 ```shell #使用test语法判断10>9 [root@test001 ~]# test 10 -gt 9 # 打印出上面的判断结果,输出0,表示结果为真 [root@test001 ~]# echo $? 0 #也可以使用[]语法,下面判断2>1,输出结果为0,表示true [root@test001 ~]# [ 2 -gt 1 ] [root@test001 ~]# echo $? 0 #判断2<1,结果为1,表示false [root@test001 ~]# [ 2 -lt 1 ] [root@test001 ~]# echo $? 1 ``` ### (2)文件权限判断 ```shell # 使用ll查看一下文件列表,当前root用户,对于1.txt有rw权限 [root@test001 ~]# ll 总用量 12 -rw-r--r--. 1 root root 99 5月 17 15:59 1.txt # 判断当前用户对1.txt是否有r权限,结果为0,表示true [root@test001 ~]# [ -r 1.txt ] [root@test001 ~]# echo $? 0 # 判断当前用户对1.txt是否有x权限,结果为1,表示false [root@test001 ~]# [ -x 1.txt ] [root@test001 ~]# echo $? 1 ``` ### (3)根据文件类型判断 ```shell # 1.txt为普通文件,bash为目录 [root@test001 ~]# ll 总用量 12 -rw-r--r--. 1 root root 99 5月 17 15:59 1.txt drwxr-xr-x. 2 root root 114 5月 20 16:56 bash # 判断2.txt是否存在,返回1,表示false [root@test001 ~]# [ -e 2.txt ] [root@test001 ~]# echo $? 1 # 判断1.txt是否存在,返回0,表示true [root@test001 ~]# [ -e 1.txt ] [root@test001 ~]# echo $? 0 # 判断1.txt是否是普通文件,返回0,表示true [root@test001 ~]# [ -f 1.txt ] [root@test001 ~]# echo $? 0 # 判断1.txt是否是目录,返回1,表示false [root@test001 ~]# [ -d 1.txt ] [root@test001 ~]# echo $? 1 # 判断/root/bash是否是目录,返回0,表示true [root@test001 ~]# [ -d /root/bash ] [root@test001 ~]# echo $? 0 ``` ### (4)多条件判断(&&、||) > 多条件判断(&& 表示前一条命令执行成功时, 才执行后一条命令, || 表示上一条命令执行失败后, 才执行下一条命令) #### 案例1:多条件判断 ```shell # 3>2 && 2>1,返回0,表示ture [root@test001 shells]# [ 3 -gt 2 ] && [ 2 -gt 1 ] [root@test001 shells]# echo $? 0 # 3>2 && 2<1,返回1,表示false [root@test001 shells]# [ 3 -gt 2 ] && [ 2 -lt 1 ] [root@test001 shells]# echo $? 1 # 3<2 || 2>1,返回0,表示true [root@test001 shells]# [ 3 -lt 2 ] || [ 2 -gt 1 ] [root@test001 shells]# echo $? 0 ``` #### 案例2:模仿3元运算符(a?b:c) ```shell # 定义2个变量,a=10,b=9 [root@test001 ~]# a=10 [root@test001 ~]# b=9 # 若a>b,输出a>b为true,否则输出a>b为false,相当于实现了(a?b:c)3元运算符 [root@test001 ~]# [ $a -gt $b ] && echo "$a>$b为true" || echo "$a>$b为false" 10>9为true [root@test001 ~]# a=1 [root@test001 ~]# b=2 [root@test001 ~]# [ $a -gt $b ] && echo "$a>$b为true" || echo "$a>$b为false" 1>2为false ``` <a style="display:none" target="_blank" href="https://mp.weixin.qq.com/s/_S1DD2JADnXvpexxaBwLLg" style="color:red; font-size:20px; font-weight:bold">继续收门徒,亲手带,月薪 4W 以下的可以来找我</a> ## 最新资料 1. <a href="https://mp.weixin.qq.com/s?__biz=MzkzOTI3Nzc0Mg==&mid=2247484964&idx=2&sn=c81bce2f26015ee0f9632ddc6c67df03&scene=21#wechat_redirect" target="_blank">尚硅谷 Java 学科全套教程(总 207.77GB)</a> 2. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484192&idx=1&sn=505f2faaa4cc911f553850667749bcbb&scene=21#wechat_redirect" target="_blank">2021 最新版 Java 微服务学习线路图 + 视频</a> 3. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484573&idx=1&sn=7f3d83892186c16c57bc0b99f03f1ffd&scene=21#wechat_redirect" target="_blank">阿里技术大佬整理的《Spring 学习笔记.pdf》</a> 4. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484544&idx=2&sn=c1dfe907cfaa5b9ae8e66fc247ccbe84&scene=21#wechat_redirect" target="_blank">阿里大佬的《MySQL 学习笔记高清.pdf》</a> 5. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485167&idx=1&sn=48d75c8e93e748235a3547f34921dfb7&scene=21#wechat_redirect" target="_blank">2021 版 java 高并发常见面试题汇总.pdf</a> 6. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485664&idx=1&sn=435f9f515a8f881642820d7790ad20ce&scene=21#wechat_redirect" target="_blank">Idea 快捷键大全.pdf</a> ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/1/2883e86e-3eff-404a-8943-0066e5e2b454.png)
相关专辑:
Shell专题