shell for循环

前言

什么叫做循环,重复执行一段代码的结构。

只要条件满足,多次执行相同的代码

循环体(指的就是我们代码中的命令序列) 循环条件

循环条件满足,循环体将一直执行,直到条件不满足为止

遍历:对数据结构当中的每个元素进行访问的过程,对循环体中定义的对象(变量)进行操作或者输出

循环体和遍历绝大部分下是结合在一起使用的

但他们也是有些不同的地方,如下

循环是一种控制流程的结构

遍历只是对数据的操作

  • 循环的作用
  1. 如果涉及到重复性质的操作,可以用循环来进行代替。
  2. 提高代码的重复利用率
  3. 提高程序的效率

循环的语法:

for循环

主要用于已知循环次数的场景

语法结构
for 变量名  in 取值范围
do
命令序列
done

-------------下面写一个简单的例子便于理解
for i in {1..5}
do
echo $i
done

for循环的类c语言格式:

for((表达式1;表达式2;表达式3))

表达式1:定义变量,给他一个起始值

表达式2:循环范围

表达式3:定义如何循环

for ((i=0;i<10;i++))

累加和
sum=0
for ((i=1;i<=100;i++))
do
sum=$(( $i+$sum ))

done
echo $sum
~                                                         
-----------------
1-100分别算偶数和奇数求和
sum1=0
sum2=0
for ((i=0;i<=100;i++))
do
if [ $(($i%2)) -eq 0 ]
then
sum1=$(($i+$sum1))
else
sum2=$(($i+$sum2))
fi
done
echo $sum1
echo $sum2 

[root@localhost opt]# sh 123.sh 
2550
2500


双层循环和循环控制语句

echo -n 表示不换行输出

echo -e 表示输出转义字符

转义字符

\b:相当于是退格键 (backspace)

\n:表示换行,另起一行继续输出

\t:相当于输出了一个TAB键

99乘法表
for i in {1..9}
#控制总的循环次数
do
for ((j=1;j<=i;j++))
#每一次的值只能和i的相等,不能超过i
do
echo -ne "$i*$j=$(($i*$j))\t"
#取值,i和j的值     运算求乘法的结果 -n e \t
done
#内循环结束
echo  
#换一行输出 
done        
#外循环控制的是行,内循环控制的是列  
----------------------
运行结果
[czy@localhost opt]$ sh 111.sh 
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

循环控制语句

continue :满足条件时,会跳出本次循环,但是循环条件如果继续存在,继续执行后面的循环

sum=0
echo 本店新开业,消费满600白银会员  ,消费满1000黄金会员
for ((;;))  ---死循环
do
read -p  "欢迎光临,选择您要购买的商品
|衣服-500$
|裤子-400$
|帽子-150$
|袜子-50$
请挑选

:" tb
case $tb in 
"衣服")
echo "已完成购买衣服"
sum=$(($sum+500))
;;
"裤子") 
echo "已完成购买裤子"
sum=$(($sum+400))
;;
"帽子")
echo "已完成购买帽子"
sum=$(($sum+150))
;;
"袜子")
echo "已完成购买袜子"
sum=$(($sum+50))
;;
"*")
echo  "购物完成"
esac 

read -p "是否继续购物(是或否):" sd
if [ $sd == "是" ]
then
continue 
fi
if [ $sd == "否" ]
then
echo "共消费 ${sum}"
fi
if [ $sum -ge 600 ] && [ $sum -le 999 ]
then
echo "恭喜成为本店白银VIP,欢迎下次光临"
fi

if [ $sum -ge 1000 ]
then
echo "恭喜成为本店黄金VIP,欢迎您下次光临"
fi
exit 
done
-----------------实验结果
[root@localhost opt]# sh 999.sh 
本店新开业,消费满600白银会员 ,消费满1000黄金会员
欢迎光临,选择您要购买的商品
|衣服-500$
|裤子-400$
|帽子-150$
|袜子-50$
请挑选

:衣服      
已完成购买衣服
是否继续购物(是或否):是
欢迎光临,选择您要购买的商品
|衣服-500$
|裤子-400$
|帽子-150$
|袜子-50$
请挑选

:裤子
已完成购买裤子
是否继续购物(是或否):否
共消费 900
恭喜成为本店白银VIP,欢迎下次光临
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值