文章目录
一、循环语句
1、for循环基础
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。
- for循环语句的语句结构
for 变量名 in 取值列表
do
命令系列
done
或者
for ((i=*;i<=*;1++))
do
命令序列
done
for语句的执行流程
- 首先变量会在取值列表中拿去第一个值,然后去执行命令系列,执行完成后,再去拿取值列表的第二个值,然后再去执行命令序列,直到取值列表中值全部取完,后再去执行done,跳出循环。
for循环基础演示1
for循环基础演示2
基础小技巧花括号{}和seq在for循环的应用
for i in {1..50..2} 1-50的奇数
for i in {2..50..2} 1-50的偶数
for i in {10..1} 1-10倒序排列
for i in $(seq 10) 1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长
for i in $(seq 0 2 10) 1-10的偶数,中间为步长
2、案例操作演示
1.1 计算整 数和
用户随机输入一个小于100的整数,并计算从1到该数所有整数的和
1.2 列出奇偶数
1.3 计算出用户输入的数字,计算它的奇数和以及偶数和
1.4 批量添加、删除用户
批量创建用户
批量删除用户
1.4 根据ip地址列表查看主机状态
1.5 密码验证
让一个用户进行输入密码验证,输入错误重新输入,最多只能输入三次,输入正确即可进入
1.6 随机抽奖
1.7 九九乘法表
反向输出
2、while 语句
2.1 while 语句说明
for循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数,操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合适用另一种循环—–while语句
- 适用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止,但是脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行
- 循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。
while 循环语句的语法结构如下
while 条件测试操作
do
命令序列
done
执行流程
- 首先判断while后的条件测试操作结果,如果条件成立,则执行do … done 循环体中的命令序列
- 执行完成之后,再进行判断测试条件,如果成立,则继续执行do …done循环体中的命令序列
- 直到进行判断测试条件不成立,然后跳出while循环。
2.2 列出1-100 之间能被3整除的数
2.3 猜数字
随机生成一个1-100之间的数,用户去猜,猜中了,则可以退出循环,没猜对,则一直猜下去
2.4 猜商品价格
随机生成商品价格(1-1000),用户输入数字去猜,猜中了可以退出循环,并且告知猜的次数,没猜中则告知猜大了还是猜小了。
2.5 商场购物
让用户选择是否进入店中购物,最多只能进三家购物,每家店中有商品和价格进行展示,用户选择进行购买,最后累加用户所购买的全部商品的价格。
2.6 商场购物升级版
共有4家店铺,用户分别逛,用户可以选择是否继续购买,以及是否进入下一家店铺,和是否进入店铺,结束时打印逛店次数,购买的商品总数,总金额。
#!/bin/bash
ack=1 #是否进入购物
ack2=1 #是否还逛下一家店铺
i=1 #第几家店铺
sum=0 #购买的总金额
num=0 #购买商品的数量
num2=0 #逛了几次店
while [ $i -le 4 -a $ack2 -eq 1 ] #店铺小于4次,或者ack=1时才可进行购物
do
echo "共有四家店铺,现在进入第$i 家店铺"
read -p "是否进入第 $i 家店铺?(yes/no):" ack
let num2++ #每进一家店计数加1
while [ $ack = "yes" ] #用户输入yes才可进入店铺购物
do
echo "店中有多种商品,商品明细如下:"
echo "1:衣服¥200
2:鞋子¥150
3:手套¥40
4:裤子¥155"
read -p "请输入你购买的商品:" ping
case $ping in #进行匹配用户所选择的商品
1)
echo "衣服购买成功"
sum=$[$sum+200] #购买后,总价加上本次金额
let num++ #购买成功后,购买次数加1
;;
2)
echo "鞋子购买成功"
sum=$[$sum+150]
let num++
;;
3)
echo "手套购买成功"
sum=$[$sum+40]
let num++
;;
4)
echo "裤子购买成功"
sum=$[$sum+155]
let num++
esac
read -p "是否继续购买(yes/no):" yon #购物完成后,用户选择是否还继续在本店进行购物
if [ $yon = "yes" ] ;then
ack=yes #选择yes,继续购物
else
ack=2 # 选择no,则不在此店进行购物
fi
done
let i++ #进入下一店开始购物
if [ $i -le 4 ];then #如果剩余的店铺还有,则继续,没有则结束
read -p "是否还继续逛下一家店铺?(yes/no):" yon2 #用户选择是否进入下一家店铺
if [ $yon2 = "yes" ];then
ack2=1 #如果进入则继续购物
else
ack2=2 #如果不进入则结束
fi
fi
done
echo "您已购买完所有的商品,逛了$num2 次店,购买了 $num 件商品,总价为:$sum 元,欢迎下次光临"
3、until语句
跟while相反,条件为假进入循环,条件为真退出循环
语法结构
until 表达式
do
command
done
案例:计算1-50 的和
二、循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个。
1、continue
解释: 继续,但不会执行循环特内下面的代码,重新下一次循环
案例1:打印1-5的数字,3不打印
2、break
解释: 打断,马上停止本次循环,执行循环体外的代码
3、exit
解释: 接跳出程序,后面可跟状态返回码,如exit1 等等
注意:
如果在执行的脚本中,有exit退出当前程序的命令,如果使用source 进行执行该脚本的话,
那么将会退出终端程序,因为source命令是将脚本内的命令加载到系统环境中执行的,
那再执行exit的同时,也就是将exit命令在终端上进行执行,那么将会退出终端。
三、总结
循环语句有for、while和untile三种不格式的循环语句,前两种的执行效果一样,,用法上存在区别,until使用较少,与前面的语句刚好相反,注意break和continue和exit的使用方式。
-
break的使用方式: 跳出当前的循环,
-
continue的使用方式: 继续当前循环,此次循环后面将不会再输出,循环继续开始,
-
exit的使用方式: 退出当前终端,在执行的脚本的时候,尽量使用路径执行,如果使用source执行的话话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/75049.html