shell脚本详解(二)——条件测试、if语句和case分支语句
一、条件测试
1、test命令
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/089fbebcd4b65d4fa56c635e90429b10.png)
2、文件测试
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9a408e02c75aaf23739211ef44b81ab6.png)
常用操作符 | 说明 |
---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(eXcute) |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/9a1803bee9aa71aa0c1bf9fd3bfa24ed.png)
3、整数值比较
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/da5bfa177d28ac51afe297e956b8b3e1.png)
常用操作符 | 说明 |
---|
-eq | 等于(Equal) |
-ne | 不等于(Not Equal) |
-lt | 小于(Leser Than) |
-gt | 大于(Greater Than) |
-le | 小于或等于(Lesser or Equal) |
-ge | 大于或等于(Greater or Equal) |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b634541d4c8393cf1bc9e6ed46efd882.png)
4、字符串比较
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/64eb953957ae408d8a541cba561fb14a.png)
常用操作符 | 说明 |
---|
= | 字符串内容相同 |
!= | 字符串内容不同,!号表示相反的意思 |
-z | 字符串内容为空 |
-n | 检查是否有字符串存在 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/875f4c6c03594ef04ffd9d2982a2a021.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/29d4752f705b6556517becfc50f0b28e.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b197d20a7c0752d2994c4f5dbc0c8c64.png)
5、逻辑测试
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1c4badc6bd656bc2f92ef9e5b0c4c4fd.png)
常用操作符 | 说明 |
---|
-a或&& | 逻辑与,而且的意思 |
-o或▕▕ | 逻辑或,或者的意思 |
! | 逻辑否 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b657aac733b5827e352b69c11cd38371.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/150bf22ac866bfda028d7bc87ae8d1a8.png)
二、if条件语句
1、单分支
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/5583b0fedc805cb3cdd0b96ab92873d0.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/82b963ee79ec34e87c225dd95cc48edd.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/eeed556ccc3f48b6f4958e62d157d340.png)
2、双分支
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2af768fa7b1566d0dae151fd29f1dd09.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8f811a935b759a6672042ed251ff1c34.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b8e7e3be5f60060e93df49c98ee6a65d.png)
3、多分支
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0672cf013168d5be1ae48378ff407027.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/671644435bf37dc14ec715aa834747f6.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f8eec13a055f7bcb43c5affab9f64d39.png)
4、例题
①、例题1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/73743b96c52cfcbb32ebaf1f9b794e9c.png)
②、例题2
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/305d358dd5e65f8ac403925108e593d1.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cc3318f0061eeb923fb79d01bb8ed191.png)
③、例题3
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/df593056976232a7f1cdb490ba043667.png)
三、case语句
1、结构
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/09dc3c68d60bc8031c571b781673be06.png)
case 变量值 in
模式一)
命令序列
;;
模式二)
命令序列
;;
*)
默认命令序列
esac
2、例题:
①、例题1
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fe7a5f82c6b91d2413a3ceba351bae26.png)
②、例题2
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1d0b19721bb780eec83591d12a5f183f.png)