循环2-if与case语法
2023-03-14 22:47:50 时间
一、if语法结构
1. 单分支结构
if < 条件表达式 >
then
指令
fi
或者
if < 条件表达式 >;then
指令
fi
2. 双分支结构
if < 条件表达式 >
then
指令1
else
指令2
fi
3. 多分支结构
if < 条件表达式1 >
then
指令1
elif < 条件表达式2 >
then
指令2
elif < 条件表达式3 >
then
指令3
else
指令4
fi
条件表达式可以是test、[]、[[]]、(())等,也可以直接使用命令作为条件表达式 每个if语句都以if开头,并带有then,最后以fi结尾 多分支每个elif后也要带then,但else后不带then
4. 条件表达式和if语句的变换
符号条件表达式能够转换为if语句,如下
[ -f /etc/passwd ] && echo 1 || echo 0
等同于
if [ -f /etc/passwd ]
then
echo 1
else
echo 0
fi
其他条件表达式类似
二、case语句说明和语法
1. 说明
- case语句相当于多分枝的if/elif/else条件语句,但看起来更工整,常用于实现系统服务启动脚本等应用中
- case主要是写服务的启动脚本,适用范围较窄
- if取值判断、比较,应用面比case更广,几乎所有case语句都可以用if实现
2. 语法
case "变量" in
值1)
指令1...
;;
值2)
指令2...
;;
*)
指令3...
esac
说明:
- 如果变量的值等于值1时,则执行该值后面的指令1直到遇到
;;
后停止,然后跳出case语句,执行case语句后面的其他指令 - 如果没有匹配到任何值,则执行
*)
后面的指令,该指令通常是提示用户的指令,最后一个值可以省略双分号 - 表达式值支持管道、正则等多功能匹配
3. 简单实践
根据用户输入判断用户输入的哪个数值,并输出,如果非数值,则提示错误
cat /server/scripts/b7.sh
#!/bin/bash
read -p "pls input num[1-9]" num
case "$num" in
1)
echo "the num is 1"
;;
2)
echo "the num is 2"
;;
[3-9])
echo "the num is $num"
;;
*)
echo "pls input num,3q"
esac
执行脚本查看结果:
sh /server/scripts/b7.sh
pls input num[1-9]1 the num is 1sh /server/scripts/b7.sh
pls input num[1-9]3 the num is 3sh /server/scripts/b7.sh
pls input num[1-9]g pls input num,3q
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的