LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 211|回复: 0

while循环语句

[复制链接]
发表于 2023-12-29 17:00:29 | 显示全部楼层 |阅读模式
本帖最后由 xhz 于 12-29 编辑

在编程语言中,while循环(英语:while loop)是一种控制流程的陈述。利用一个返回结果为布林值(Boolean)的表达式作为循环条件,当这个表达式的返回值为“真”(true)时,则反复执行循环体内的程式码;若表达式的返回值为“假”(false),则不再执行循环体内的代码,继续执行循环体下面的代码。

         因为while循环在区块内代码被执行之前,先检查陈述是否成立,因此这种控制流程通常被称为是一种前测试循环(pre-test loop)。相对而言do while循环,是在循环区块执行结束之后,再去检查陈述是否成立,被称为是后测试循环。


shell中while语法
while 条件
  do
    命令
done

while 使用场景
         多用于创建守护进程

【示例1】:while实现web服务器搭建

         脚本代码

[root@clsn scripts]# vim web_view.sh
#!/bin/bash
#############################################################
# File Name: web_view.sh
# Version: V1.0
# Author: clsn
# Organization: http://blog.znix.top
# Created Time : 2017-12-11 10:07:24
# Description:
#############################################################
while true
  do
  echo "ok" | nc -l 81
done

  客户端进行访问测试

[root@clsn html]# curl 10.0.0.180:81
ok
  服务端显示结果:

[root@clsn scripts]# sh  web_view.sh
GET / HTTP/1.1
User-Agent: curl/7.29.0
Host: 10.0.0.180:81
Accept: */*

【示例2】:while创建定时任务

         脚本内容:

#!/bin/bash
while  true
  do
    uptime
       sleep 0.6
done
         脚本执行结果

[root@clsn while]# sh  while1.sh
15:01:52 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
15:01:53 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
15:01:53 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
15:01:54 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
15:01:55 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
15:01:55 up 2 days,  6:02,  3 users,  load average: 0.00, 0.01, 0.05
说明:

         sleep 与 usleep

sleep 单位 秒  sleep 1 休息1秒

usleep 单位 微秒 usleep 1000000 休息1s

1微秒等于百万分之一秒(10的负6次方秒)

时间测试

[root@clsn while]# time sleep 0.1

real    0m0.102s
user    0m0.001s
sys    0m0.000s
1.3.3 while 作用
  补充定时任务功能,执行小于1秒的定时任务

  循环执行某些操作,例如水果菜单

            http://www.cnblogs.com/clsn/p/8006210.html  (1.3.6)

示例1:使用while循环实现水果菜单的重复使用  

         脚本内容

View Code 使用while循环实现水果菜单的重复使用
         脚本执行过程



示例2:计算1-100的和

  方法一 (bc命令实现)

echo `seq -s + 1 100`|bc
  方法二(while循环方法)

[root@clsn while]# cat jishan.sh
#!/bin/bash
#############################################################
# File Name: jishan.sh
# Version: V1.0
# Author: clsn
# Organization: http://blog.znix.top
# Created Time : 2017-12-09 15:18:44
# Description:
#############################################################

i=1

while [ "$i" -le 100 ]
  do
  ((b=b+i))
  ((i++))
done
echo $b
示例3:实现类似手机通讯计费功能

         脚本内容:


1 [root@clsn scripts]# cat while/shouji.sh
2 #!/bin/bash
3 #############################################################
4 # File Name: shouji.sh
5 # Version: V1.0
6 # Author: clsn
7 # Organization: http://blog.znix.top
8 # Created Time : 2017-12-09 15:56:09
9 # Description:
10 #############################################################
11 sum=1000
12 i=15
13
14
15 while [ $sum -ge 15 ]
16   do
17 cat<<EOF
18 =================
19 1.发短信
20 2.查余额
21 3.账户充值
22 4.退出
23 =================
24 EOF
25     read -p "你要做什么呢?" Some
26     case "$Some" in
27       1)
28         sum=$((sum-i))
29         read -p  "请输入发送短信的内容:"
30         read -p  "请输入收信人:"
31         sleep 0.3
32         echo "发送成功."
33         echo "您当前余额为$sum"
34         ;;
35       2)
36         echo "您当前余额为$sum"
37         ;;
38       3)
39         read -p "请输入你要充值的金额:" ChongZhi
40         sum=$((sum+ChongZhi))
41         echo "充值成功,当前余额为$sum"
42         ;;
43       4)
44         exit
45         ;;
46       *)
47         echo "输入有误!"
48         exit 2
49     esac
50 done
51
52 echo "余额不足,请及时充值!"



您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表