1、循环的概述
循环的概念:循环是重复执行一段代码的结构,只有满足循环的条件,会一直执行这个代码。
组成:循环条件,循环体
循环条件:在一定范围之内按照指定的次数来执行循环。
循环体:在指定的次数内,执行的命令序列,只有条件满足,循环体会一直执行。
2、循环和遍历的区别
遍历:指对数据结构中每个元素进行一次访问的过程,通常和循环一起使用,访问的目的就是为了执行特定的操作。
循环就是操作
遍历就是输出
3、循环的作用
1、重复执行代码,尤其是统一的相同的,批量的操作。
2、提高代码的重复利用率
3、提高人工的效率,减少人工的干预,提高效率。
4、简化程序的逻辑,降低代码的出错的可能性。
4、循环的语法
for循环:使用场景:用于已知循环次数的场景。
while循环:和for循环可以通用,常用于死循环
until:条件不满足的时候执行循环,条件满足不执行循环。
5、for循环
格式 一、
for 变量名称 (前面没有$)in 范围(可以使用{}表示)
do
命令序列
done
实例:批量创建用户
#创建一个文件passwd.txt
#在文件成创建三行用户,使用循环创建这个三个用户,并且统一设定密码为123456
for i in $(cat /opt/passwd.txt)
do
useradd $i
echo 123456 | passwd --stdin $i
done
运行结果:
格式二、
类c语言格式:
for(( 表达式1;表达式2;表达式3))
do
命令序列
done
for((i=0;i<=5;i++))
表达式1:定义变量并且赋予初始值
表达式2:循环的范围
表达式3:循环的方式,变量每一次自增1
格式三、
死循环
for((;;))
do
命令序列
done
实例:求出1-100的奇数和,偶数和
#1-100的奇数和,偶数和
sum1=0
sum2=0
for ((i=1;i<=100;i++))
do
if [[ $(($i%2)) -eq 0 ]]
then
sum1=$(($i+$sum1))
else
sum2=$(($i+$sum2))
fi
done
echo "偶数的和为:$sum1"
echo "奇数的和为:$sum2"
6、循环控制语句
循环控制语句 :continue break
break:在循环内部,执行到break命令时,会立即跳出当前循环,并终止
continue:在执行到continue时,跳出当前循环,但是如果循环条件依然满足,会执行后续的命令
实例:
#猜数字,输入一个0-100的随机数,这随机数由系统生成
#死循环,一直到用户猜中为止,猜中了循环才会终止
#循环数随机生成 $RANDOM 范围0-32767
#循环控制语句 continue break
#猜大了提示用户猜大了
#提示猜了多少次
#猜数字,输入一个0-100的随机数,这随机数由系统生成
#死循环,一直到用户猜中为止,猜中了循环才会终止
#循环数随机生成 $RANDOM 范围0-32767
#循环控制语句 continue break
#猜大了提示用户猜大了
#提示猜了多少次
count=0
a=$((RANDOM%10+1))
for ((;;count++))
do
read -p "请输入一个数字:" num
if [[ $num -eq $a ]]
then
echo "恭喜你猜对了"
break
elif [[ $num -gt $a ]]
then
echo "你猜大了"
elif [[ $num -lt $a ]]
then
echo "你猜小了"
fi
done
echo $count
实例:购物例题
逛淘宝选购商品,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元)每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。
#!/bin/bash
yifu=500
kuzi=400
xiezi=350
maozi=150
wazi=50
count=0
echo "欢迎来到本商场"
echo "1:衣服500元"
echo "2:裤子400元"
echo "3:鞋子350元"
echo "4:帽子150元"
echo "5:袜子50元"
for ((;;))
do
echo "开始购物"
read -p "请选择你想购买的东西(1:衣服,2:裤子 3:鞋子 4:帽子 5:袜子)" shopping
case $shopping in
1)
count=$(($count+500))
;;
2)
count=$(($count+400))
;;
3)
count=$(($count+350))
;;
4)
count=$(($count+150))
;;
5)
count=$(($count+50))
;;
*)
echo "抱歉!本商店没有该物品"
esac
read -p "是否继续购物:(y/n)" pd1
case $pd1 in
y)
continue
;;
n)
echo "是否继续逛下一家商店"
echo "本次消费$count元"
break
;;
esac
echo "是否继续逛下一家商店"
done