循环控制语句: break 跳出循环 ,控制循环次数,执行break后,满足条件立即跳出当前循环,
例子:到3就跳出后面不执行
双层for循环:break后面不加默认1,break 2 及控制外循环也控制内循环,先停内循环,外循环一并停止,有几层循环break跟几次循环几次直接跳出控制几层写几层
只是跳过了当前3的条件
continue——————满足条件跳出当前循环,但是不影响后续循环执行,它的作用是在循环内部跳过本次循环并,继续下一次循环
什么都能不加只针对内循环,则循环打印1245,给2的值相当于及控制内也控制外,所以内循环在3跳出,外循环还要执行当外循环等于3的时候还要走,则在3跳出,再一次执行到3跳出
给2 的值跳出内循环的执行外面的外循环
$RANDOM 范围0-32767
表示1-100的随机数$((RANDIOM%100+1))
RANDIOM%表示取余
不加1 是0-99
num=$(($RANDOM%100+1))
for ((;;))
do
read -p "输入数字:" a
if [ $a -eq $num ]
then
echo "bingo"
break
elif [ $a -gt $num ]
then
echo "输入的数字太大啦!"
else
echo "输入的数字太小啦!"
fi
done
猜到正确的数字后算出猜了几次
con=0
num=$(($RANDOM%100+1))
for ((;;))
do
let con++
read -p "输入数字:" a
if [ $a -eq $num ]
then
echo "bingo,一共猜了${con}次"
break
elif [ $a -gt $num ]
then
echo "输入的数字太大啦!"
else
echo "输入的数字太小啦!"
fi
done
格式:
while 条件测试操作
do
命令序列
done
for和while可以通用
用在写死循环上,只有条件不成立会退出
基本语法:
要让变量自加,循环外定义变量的初始值
定义死循环:while true 或 while [ 1 -eq 1]
i=0
while [ $i -lt 5 ]
do
useradd stu${i}
echo "12345" | passwd --stdin stu${i}
if [ $? -eq 0 ]
then
echo "用户已添加成功"
else
echo "用户已存在"
fi
let i++
done
作用:当条件不满足才会退出,重复测试某个条件,只要条件不成立则反复执行
格式:
until 条件测试操作
do
命令序列
done
总结:for while until
for :主要用于已知循环次数
while:条件满足才执行循环,不满足就退出循环,在绝大多数情况下,while和for可以通用,while更好用在死循环
until:条件不满足才能循环,满足条件退出,一般不用
循环控制语句:
continue:跳出当前的循环,后续条件继续执行
break:跳出当前循环,结束整个循环
多个循环条件,后面可以跟上数字,默认1 2;控制两层,3——控制三层
逛淘宝选购商品,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,购买如果
不再继续逛的话进行购物车结算总额。
cloths=500
pants=400
shose=350
hat=150
socks=50
chose=1
total=0
while [ $chose -eq 1 ]
do
read -p "选择购不购买(1:购买2:不购买):" buy
if [ $buy -eq 2 ]
then
echo "一共消费,$total 元"
break
else
read -p "请输入想购买的类型1衣服2裤子3鞋子4帽子5袜子:" a
fi
case $a in
1)
let total=$total+$cloths
;;
2)
let total=$total+$pants
;;
3)
let total=$total+$shose
;;
4)
let total=$total+$hat
;;
5)
let total=$total+$socks
;;
*)
esac
done
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
read -p "请选择运算方法:" c
case $c in
+)
echo $[ $a + $b ]
;;
-)
echo $[ $a - $b ]
;;
/)
echo $[ $a % $b ]
;;
*)
echo $[ $a * $b ]
;;
*)
;;
esac
for((;;))
do
read -p "请输入需要打印的目录文件:" d
ls $d
echo "退出打印"
break
done
for((;;))
do
read -p "请输入操作方式:(1:合并2:不合并):" a
if [ $a -eq 1 ]
then
read -p "请输入想要合并的文件名:" b
ls $b >> newa.txt
echo "合并成功"
elif [ $a -eq 2 ]
then
echo "退出合并"
break
else
echo "输入错误"
fi
done
(1)
sum=0
for ((i=1;i<=100;i++))
do
sum=$[$sum+$i]
done
echo $sum
sum=0
for i in `seq 0 1 100`
do
sum=$(($i+$sum))
done
echo $sum
i=0
sum=0
while [ $i -lt 100 ]
do
let i++
sum=$(($sum+$i))
done
echo $sum