循环语句
1.for循环
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。例如,根据通讯录中的姓名列表创建系统账号,根据服务器清 单检查各主机的存活状态
当面对各种列表重复任务时,使用简单的 if 语句已经难以满足要求,而顺序编写全部代 码更是显得异常烦琐、困难重重
for循环语句
语法结构
(1)列表循环
(2)不带列表循环
(3)类C风格的for循环
(1)列表循环
遍历
for 变量名 in {list}
do
command
done
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rPLAbjoy-1656666224122)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220701140447006.png)]
可以发现我没有用#!/bin/bash ,也执行成功了
i这里实际没有调用,所以就相当于in后面几个参数就循环几次
案例:
输出0-50之间的偶数
附小技巧:花括号{}和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的偶数,中间为步长
例子
for i in $(seq 0 2 10);do echo $i ;done
(2)不带列表循环
不带列表循环执行时由用户指定参数和参数的个数决定的
for 变量名
do
command
done
例;打印hello
(3)类C风格的for循环
for ((expr1;expr2;expr3))
do
command
done
expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出
例1:打印1-5
迭代
注:i++ : i=1+1 先赋值再运算 i=1 之后 再 +1
++i : 1+1=i 先运算再赋值 1+1 之后 再=i
例2:打印1-10的奇数
附2:类C风格运算符用法
++ 自身变量+1
– 自身变量-1
+=5 自身变量+5
-=5 自身变量-5
=5 自身变量5
/=5 自身变量/5
%=5 自身变量%5
例3:计算1-100的奇数和
案例
#现在有个抽奖箱,里面放了3位数字,每次取一个数字,查看对应id的人名 ,然后记录次数+1,并且取完之后,将数字丢回抽奖
箱,再次进行抽取,再次记录id对应的人名,并记录次数+1 ,反复10次,最后统计每个人次数
2.while循环
1、语法结构
2、死循环
(1)语法结构(3种)
- while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
2.1语法结构
while 表达式
do
command
done
例1:打印1-5
例2:输出1-100之间不能被3整除的数字
例3:打印1-100的和
2.2while死循环
-
while [ 1 -eq 1 ] //写一个永远为真的表达式,1等于1这个条件永远为真,所以这个脚本会一直循环下去
do
command
done -
while true
do
command
done -
while :
do
command
done
例1:猜数字,猜不对就一直猜
例2:猜商品价格游戏
$random用于生成0—32767的随机数
第一种方法
第二种方法
发现报错
解决:
案例:
需求1:首先要求有5家店,每家店 4个商品(衣服200,鞋子150,手套40,裤子155),然后要求以交互式的方式,让用户选择进入哪家店,并且选择哪个商品
3.Until循环
跟while相反,条件为假进入循环,条件为真退出循环
语法结构
until 表达式
do
command
done
例1:计算1-50的和1275两种写法
第一种
第二种
死循环结构
until false
do
command
done
until [ 1 -ne 1 ]
do
command
done
4.循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个
1、continue
继续,但不会执行循环体内下面的代码了,开始重新开始下一次循环
例1:打印1-5的数字,3不打印
2、break
打断,马上停止本次循环,执行循环体外的代码
例2:1-10的数字,7后面的都不打印
3、exit
直接跳出程序,后面可跟状态返回码如exit 1等等
直接跳出程序所以不会执行最后的echo hi,并且返回码是100通过$?查看