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"