shell循环以及实验

循环是一种重复执行的代码结构,只要满足循环的条件,会一直执行这个代码

循环条件:在一定范围之内,按照指定次数来执行循环。

循环体:在指定的次数内,执行的命令序列,只要条件满足,循环体就会一直被执行

循环和遍历:

遍历指的就是对数据结构中每个元素进行一次访问的过程,通常和循环一起使用。

访问的目的就是为了执行特定的操作

循环是操作

遍历就是输出

循环的作用是什么

1、重复执行代码,尤其是统一的,相同的,批量的操作。

2、提高代码的重复利用率

3、提高人工的效率,较少人工的干预,提高效率

4、简化程序的逻辑,降低代码出错的可能性。

for循环:用于已知循环次数的场景。

while循环:和for循环可以通用,常用与死循环

until:条件不满足才执行循环,条件不满足,不执行。

for循环的格式

格式一

for 变量名称 (前面没有$)in 范围 {}

do

命令序列echo

done

更改密码


for user in $(cat /opt/passwd.txt)
do
 useradd $user
 echo 123456 | passwd --stdin $user
 done
# sh 1.sh 
useradd:用户“xy101”已存在
更改用户 xy101 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“xy102”已存在
更改用户 xy102 的密码 。
passwd:所有的身份验证令牌已经成功更新。
useradd:用户“xy103”已存在
更改用户 xy103 的密码 。
passwd:所有的身份验证令牌已经成功更新

格式二

类C语言格式

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

do

echo

done

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

表达式1:定义变量并且赋予初始值

表达式2:循环范围

表达式3:循环方式

格式三

死循环

for ((;;))

do

命令序列

done

猜数字,输入

随机数:$RANDOM

循环控制语句

break :再循环内部,执行到break命令时,会立刻跳出当前循环,并终止

continue:当执行contiune时。跳出当前循环,如果条件满足

会执行后续的循环条件

实验

循环实验

在这里插入图片描述

利用循环指令猜大小以及添加次数
在这里插入图片描述

在这里插入图片描述

例题:购物

逛淘宝选购商品,

每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),

每次选购完或不买都会提示用户是否继续逛下一家商店,

如果不再继续逛的话进行购物车结算总额。.

#!/bin/bash

#每家商店有五种商品选购,每次选购完或不买都会提示用户是否继续逛下一家商店,

如果不再继续逛的话进行购物车结算总额。

#衣服500元

#裤子400元

#鞋子300元

#帽子150元

#袜子50元

sum=0 suu=0
for((;;))
do
 echo "欢迎光临"
 echo "衣服500 裤子400 鞋子350 帽子150 袜子50"
read -p "输入要购买的商品{1衣服|2裤子|3鞋子|4帽子|5袜子}:" num

case $num in
1)
suu=500
;;
2)
suu=400
;;
3)
suu=300
;;
4)
suu=150
;;
5)
suu=50
;;
*)
sun=0
echo "欢迎下次光临 共消费 $sum元"
break
esac
sum=$(($sum+$suu))
read -p "您选择继续购物还是结算购物车{y/n}:" nuu
if [ $nuu = y ]
 then
continue
elif [ $nuu = n ]
 then
 echo "欢迎下次光临,共消费 $sum元"
break
 查看结果
# sh 11.sh 
欢迎光临
衣服500 裤子400 鞋子350 帽子150 袜子50
输入要购买的商品{1衣服|2裤子|3鞋子|4帽子|5袜子}:1
您选择继续购物还是结算购物车{y/n}:y
欢迎光临
衣服500 裤子400 鞋子350 帽子150 袜子50
输入要购买的商品{1衣服|2裤子|3鞋子|4帽子|5袜子}:2
您选择继续购物还是结算购物车{y/n}:n
欢迎下次光临,共消费 900[root@test3 opt]# sh 11.sh 
欢迎光临
衣服500 裤子400 鞋子350 帽子150 袜子50
输入要购买的商品{1衣服|2裤子|3鞋子|4帽子|5袜子}:2
您选择继续购物还是结算购物车{y/n}:n
欢迎下次光临,共消费 400

某山顶上有一颗香蕉树,一只猴子第一天从树上摘了若干根香蕉,当即就吃了一半,还不过瘾,
又多吃了一根。第二天猴子又将剩下的香蕉吃了一半,禁不住诱惑,又多吃了一根香蕉。
依此类推,每天都将剩余的香蕉吃一半后再多吃一根。到了第十天,猴子发现只剩一根香蕉了,
请问这只猴子在第一天总共摘了多少根香蕉?

num=1
for((i=9;i>=1;i--))
 do
  num=$((($num+1)*2))
 echo "第${i} 开始有${num} :"
done
查看结果
# sh 22.sh 
第9 开始有4 :
第8 开始有10 :
第7 开始有22 :
第6 开始有46 :
第5 开始有94 :
第4 开始有190 :
第3 开始有382 :
第2 开始有766 :
第1 开始有1534 :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值