case语句与for - while - until 循环语句
一、case多分支语句
1、case语句的结构
- 针对变量的不同取值,分别执行不同的命令序列
- 与多分支的if语句相似,只是if语句需要判断多个不同的条件
- case语句只是判断一个变量的不同取值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5fju8HDW-1576066624148)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576063838935.png)]](https://i-blog.csdnimg.cn/blog_migrate/5bc7818bd57da12e64e02052bbcab39e.png)
2、case语句应用示例
示例1 :
- 击键类型识别
提示用户输入一个字符 , 判断出该字符是字母、数字或者其他字符
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TNg6BblA-1576066624148)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576064077451.png)]](https://i-blog.csdnimg.cn/blog_migrate/498bacaa902dcdfbb4dfd8b7ff3b2bf0.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9PtNspr6-1576066624149)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576064119613.png)]](https://i-blog.csdnimg.cn/blog_migrate/b6ab04df0831daedd46a75fd47146a16.png)
二:for循环语句
1、for循环语句的结构
读取不同的变量值,用来逐个执行同一组命令;
针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出循环
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w5fUuk29-1576066624150)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576064449971.png)]](https://i-blog.csdnimg.cn/blog_migrate/b01dea96381afe60b17281bfa107cebd.png)
2、for语句应用示例
示例1 :
- 批量添加用户
用户名存放在users.txt文件中,每行一个 , 初始密码均设为123456 ,验证脚本
首先先进入/opt/user.txt 下建立几个用户

示例2 :
- 根据IP地址检查主机状态
IP地址存放在ipadds.txt文件中,每行一个 ,使用ping命令检测各主机的连通性
同样的,需要在ipadds.txt 文件中输入几个IP地址,
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6eqkM11K-1576066624151)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576064816586.png)]](https://i-blog.csdnimg.cn/blog_migrate/b82f5dfe8f036e234f8f1661bdc9d59d.png)
三:while循环语句
1、while语句的结构
重复测试某个条件,只要条件成立则反复执行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nzbRnMGg-1576066624152)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576065027387.png)]](https://i-blog.csdnimg.cn/blog_migrate/e09e9f8dbd27d361083568a347ea3682.png)
示例1:
-
猜商品价格游戏
通过变量RANDOM获得随机数 ,提示用户猜测并记录次数,猜中后退出循环
#! /bin/bash
num=`expr $RANDOM % 1000`
i=0
while true
do
read -p "你猜测的数目是: " shu
let i++
if [ $shu -eq $num ]
then
echo "你猜对了,是: $num"
echo "你猜了$i次"
exit 0
elif [ $shu -gt $num ]
then
echo "太高了”
else
echo "太低了”
fi
done
示例2 :
-
逛商店购买商品
进商店购买任何商品,最终得出所购买商品的总价格
i=1
sum=0
while [ $i -1e 5 ]
do
echo"进入第$i家商店"
read -p "是否进入看看(yes/no)" doing
while[ $doing = "yes" ]
do
echo"1:衣服¥200"
echo"2:鞋子¥150"
echo"3:手套¥40"
echo"4:裤子¥155"
read -p "请选择需要购买的商品序列:" num
case $num in
1)
echo "衣服购买成功"
expr $[sum+=200] &> /dev/null
;;
2)
echo "鞋子购买成功”
expr $[sum+=150] &> /dev/null
;;
3)
echo "手套购买成功”
expr $[sum+=40] &> /dev/null
;;
*)
echo” 裤子购买成功"
expr $[sum+=155] &> /dev/null
esac
read -p "是否继续进行购买(yes/no)" doing
done
let i++
if[ $doing = "no" ]
then
continue
fi
done
echo "购物总价:$sum"
四:until循环语句
1、until语句的结构
重复测试某个条件,只要条件不成立则反复执行。

示例1 :
- 计算1~50的和值
通过循环累加的方式计算1 ~50的和值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxUjbF3F-1576066624153)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576066001465.png)]](https://i-blog.csdnimg.cn/blog_migrate/8305028dd6e7de15280a636bec685596.png)
示例2:
- 为指定用户发送在线消息
若用户不在线(未登录系统),则每3分钟试-次 ,统后在发送信息,用户名与消息通过位置参数传递给脚本
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rpqGArX-1576066624154)(C:\Users\xumin\AppData\Roaming\Typora\typora-user-images\1576066096754.png)]](https://i-blog.csdnimg.cn/blog_migrate/aa304a1f01852ec714956adc7b098a70.png)
五:总结
Linux系统中的各种系统服务器脚本都是用了case分支结构,以便通过start、stop、restart等位置参数进行控制;
case语句可根据变量的不同的取值执行不同的命令序列,比多分支的if语句结构更加清晰。
for语句可根据已知的列表对象重复执行命令序列,更适合无规律的循环操作;
while语句可根据特定的条件重复执行命令序列,更适合有规律的循环规律。
本文深入解析Shell脚本中的case、for、while及until循环语句,通过具体示例阐述了不同控制结构的应用场景与实现方式,如字符类型识别、批量用户创建、商品价格猜测游戏等。
1518

被折叠的 条评论
为什么被折叠?



