shel条件语句if,case
shel条件语句if,case
条件测试
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
格式1:test 条件表达式
格式2:[ 条件表达式 ] #注:格式2[]前后需留有至少一个空格
格式3:[[ 条件表达式 ]] #注:[[ ]]支持正则和通配符
常用的文件测试操作符
常用文件比较运算符 | 说明 | 示例 |
---|---|---|
-e filename | 如果filename存在,则为真 | [ -e /var/log/syslog ] |
-d filename | 如果filename目录存在,则为真 | [ -d /tmp/mydir ] |
-f filename | 如果filename文件存在,则为真 | [ -f /usr/bin/grep ] |
-L filename | 如果filename符号链接存在,则为真 | [ -L /usr/bin/grep ] |
-r filename | 如果filename可读,则为真 | [ -r /var/log/syslog ] |
-w filename | 如果filename可写,则为真 | [ -w /var/mytmp.txt ] |
-x filename | 如果filename可执行,则为真 | [ -L /usr/bin/grep ] |
filename1 -nt filename2 | 如果filename1比filename2新,则为真 | [ /tmp/install/etc/services -nt /etc/services ] |
filename1 -ot filename2 | 如果filename1比filename2旧,则为真 | [ /tmp/install/etc/services -nt /etc/services ] |
-a -e 的区别 -a 取反会有问题
整数值比较
格式为:[ 整数1 操作符 整数2 ]
常用的测试操作符 | 说明 |
---|---|
-eq | 等于(equal) |
-ne | 不等于(not equal) |
-gt | 大于(greater than) |
-lt | 小于(lesser than) |
-le | 小于或等于(lesser or equal) |
-ge | 大于或等于(greater or equal) |
字符串比较
格式1:
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:
[ -z 字符串 ]
逻辑测试
格式1:
[ 表达式1 ] 操作符 [ 表达式2 ]
格式2:
命令1 操作符 命令2
常用操作符 | 说明 |
---|---|
-a或&& | 逻辑与,“而且”的意思 |
-o或|| | 逻辑或,“或者”的意思 |
! | 逻辑否 |
if语句
单分支的if语句
if 条件测试操作
then 命令序列
fi
双分支的if语句
if 条件测试操作
then 命令序列1
else 命令序列2
fi
判断输入的数字是奇偶数
多分支的if语句
if 条件测试操作1
then 命令序列1
elif 条件测试操作2
then 命令序列2
else
命令序列3
fi
httpd服务
查询学生成绩
学校田径会,10分满分,8-10分(不包括8分)为优秀,6-8分(不包括6分)为合格 0-6分,不合格将女生、男生需要区分开来,女生7-10分为优秀,男生8-10分为优秀,女生的学号为1-10 男生的学号为11-20 ,请以交互时的方式询问“请输入参赛学员的学号(1-20):”,最后输出"该学生为男生/女生,成绩为优秀"
case语句结构
case 变量名称 in
“第一个变量内容”
程序段
;;
“第二个变量内容”
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
案例:1.查看分数情况
2.查看输入的字符
总结条件语句if
1、test命令:
两种格式
test 条件表达式
[条件表达式]
2、文件测试
-d -e -f -r -w -L
3、整数值比较
-eq -ge -le -gt -lt -ne
4、字符串比较
相等=
不相等 !=
空值 -z
是否存在 -n
5、逻辑测试
逻辑与:-a 或者&&
逻辑或:-o 或者||
逻辑否:!
6、if语句
单分支
双分支
多分支
当 if 语句中使用 [ ] 条件修饰符时, $flag 变量必须加上引号。
当 if 语句中使用 [[]] 条件修饰符时,$flag 变量的引号可有可无。
7、case语句
多分支结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了