while 循环和until语句

while 循环:
while循环的特点:满足条件执行循环,不满足结束循环。主要用于不知道循环次数,需要主动结束循环或者达到条件的场景。
语法结构:
while [条件判断]
do
命令序列
done

用while写一个1-100的累加和:


sum=0
i=1
while [ $i -le 100 ]
do
sum=$(($sum+$i))
let i++
done
echo $sum

while写死循环的方式:
while true
随机数(shell自带内置变量):$RANDOM
$RANDOM,表示一个随机整数;
$ RANDOM值的范围是:0-32767
取范围:$ ((RANDOM%100)):0-99;
$((RANDOM%100+1)):1-100
$((RANDOM%1000)):0-999

猜数字脚本:


 num=$((RANDOM%100+1))
cs=0
while true 
do
read -p "猜数字游戏开始了,请输入一个数字:" s
let cs++
if [ $num -eq $s ]
then
echo "恭喜您,猜对了,游戏结束!!!"
echo "一共猜了${cs}次"
break
elif [[ $s -gt $sum ]]
then
echo "恭喜你猜大了,请再来一次!!"
else
echo "恭喜你猜小了,请再来一次!!"
fi
done



测试网段脚本:
ping 网段,把可以ping通的ip地址保留在/opt/host.txt

 for ((i=1;i<=254;i++))
do
{
ping -c2 -W 2 20.0.0.$i &> /dev/null
if [[ $? -eq 0  ]]
then
echo "20.0.0.$i成功 ping通"
echo 20.0.0.$i >> /opt/host.txt
else
echo "20.0.0.$i连接失败"
fi
}&

done
wait #执行结束不等待直接退出

#{}$ 并行执行,可以加快速度。

利用循环把/opt目录下的txt文件的内容合并到一个文件
vim xunhuan.sh

用while 死循环写脚本完成简单的计算器:

while true
do
read -p "欢迎使用计算器,请输入一个数字:" a
read -p "请输入一个运算符(提示:+ — * / %):" b
read -p "欢迎使用计算器,请输入二个数字:" c
if [[ $b == "+" ]]
then
sum=$(($a+$c))
echo "加法的结果为:$sum"
elif [[ $b == "-" ]]
then
sum=$(($a-$c))
echo "减法的结果为:$sum"
elif [[ $b == "*" ]]
then
sum=$(($a*$c))
echo "乘法的结果为:$sum"
elif [[ $b == "/" ]]
then
sum=$(($a/$c))
echo "除法的结果为:$sum"
elif [[ $b == "%" ]]
then
sum=$(($a%$c))
echo "取余的结果为:$sum"
else
echo "即将exit 输入有误,请再次进入!!!"
exit

fi
done



~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                  

购物
假设某商场网站,只有一家点
衣服 500
裤子 400
鞋子 300
帽子 200
袜子 100
每次购选完成后都要提示用户是否继续购买,如果用户不买了,要提示结算金额,你消费了多少
如果继续购买,就继续添加商品,最后写出总金额

#!/bin/sh
sum=0
sum1=0
sum2=0
sum3=0
sum4=0
b=="yes"
while true; do
    echo "欢迎进入啥啥都有服装商城 --衣服500元、裤子400元、鞋子300元、帽子200元、袜子100元--"
    read -p "请选择您是否需要进行购买,yes继续/任意键结束:" b
    for b in $b; do
        if [[ $b == "yes" ]]; then
            echo "感谢您的支持,请购物,祝您购物愉快,开心快乐,每一天!!"
            read -p "请输入你所需要购买的商品:" a
            if [[ $a == "衣服" ]]; then
                sum=$(($sum + 500))
                echo "您当前购买的商品$a,${sum}元。"
            elif [[ $a == "裤子" ]]; then
                sum1=$(($sum1 + 400))
                echo "您当前购买的商品是$a,${sum1}元。"
            elif [[ $a == "鞋子" ]]; then
                sum2=$(($sum2 + 300))
                echo "您当前购买的商品是$a,${sum2}元。"
            elif [[ $a == "帽子" ]]; then
                sum3=$(($sum3 + 400))
                echo "您当前购买的商品是$a,${sum3}元。"
            elif [[ $a == "袜子" ]]; then
                sum4=$(($sum4 + 400))
                echo "您当前购买的商品是$a,${sum4}元。"
            else
                echo "您的输入有误,请重新输入: "
            fi
        else

until语句:重复测试某个条件,只要当判断条件不成立时候,才进行循环,条件成立,终止循环。
unti 格式:
unti [条件测试语句]
do 命令序列
done

i=0
sum=0
until [ $i -gt 100 ]
do 
sum=$(($i+$sum))
let i++
done
echo "1-100总和是$sum"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值