一、while循环
while expression
do
statement1
statement2
...
done
#练习ping主机
[root@manager day6]# cat 2.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-25
#FileName: 2.sh
#*************************************************************
i=105
net="192.168.131"
while [ $i -le 110 ]
do
if ping $net.$i -c 2 -w 0.2 &>/dev/null
then
echo "$net.$i is up"
else
echo "$net.$i is down"
fi
let i++
done
[root@manager day6]# sh 2.sh
192.168.131.105 is down
192.168.131.106 is down
192.168.131.107 is up
192.168.131.108 is down
192.168.131.109 is down
192.168.131.110 is down
1.while循环读写文件
方法一:采用exec读取文件,然后进入while循环处理
exec < File
while read line
do
statement1
done
方法二:使用cat读文件,然后通过管道进入while循环处理
cat File | while read line
do
statement1
done
[root@manager day6]# cat /scripts/day5/userfile | while read line
> do
> echo $line
> done
zs
li
wmz
方法三:通过在while循环结尾,使用输入重定向方式【推荐】
while read line
do
statement1
done < File
[root@manager day6]# while read line
> do
> echo $line
> done < /scripts/day5/userfile
zs
li
wmz
2.while的死循环:while : 或 while true
#练习猜商品的价格
随机数来自:echo $[RANDOM%100]
[root@manager day6]# cat while3.sh
#!/bin/bash
#*************************************************************
#Author: pyy
#Date: 2020-06-25
#FileName: while3.sh
#*************************************************************
#猜商品价格
price=$[RANDOM % 100]
echo $price
sum=0
while true
do
read -p "请输入商品的价格:" answer
let sum++
if [ $answer -eq $price ]
then
echo "猜对啦,一共猜了 $sum 次"
exit
elif [ $answer -ge $price ]
then
echo "猜大啦,继续猜"
else
echo "猜小啦,继续猜"
fi
done
[root@manager day6]# sh while3.sh
33
请输入商品的价格:23
猜小啦,继续猜
请输入商品的价格:34
猜大啦,继续猜
请输入商品的价格:33
猜对啦,一共猜了 3 次
二、until循环:不断地重复执行循环体中的语句,直至某个条件成立则退出
until expression
do
statement1
statement2
...
done
三、select循环:创建菜单
select 变量名 [ in 菜单值列表 ]
do
statement1
statement2
...
done
[root@manager day6]# select ver in 5.1 5.5 5.6 5.7 8.0
> do
> echo $ver
> done
1) 5.1
2) 5.5
3) 5.6
4) 5.7
5) 8.0
#? 3
5.6
#? 5
8.0