【shell流程控制之while循环、until循环、select循环-07】

一、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

练习:使用shell实现 石头剪刀布游戏。电脑随机出拳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛追汤圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值