前言
什么叫做循环,重复执行一段代码的结构。
只要条件满足,多次执行相同的代码
循环体(指的就是我们代码中的命令序列) 循环条件
循环条件满足,循环体将一直执行,直到条件不满足为止
遍历:对数据结构当中的每个元素进行访问的过程,对循环体中定义的对象(变量)进行操作或者输出
循环体和遍历绝大部分下是结合在一起使用的
但他们也是有些不同的地方,如下
循环是一种控制流程的结构
遍历只是对数据的操作
- 循环的作用
- 如果涉及到重复性质的操作,可以用循环来进行代替。
- 提高代码的重复利用率
- 提高程序的效率
循环的语法:
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,欢迎下次光临