Shell脚本学习-While循环1

本文详细解释了while循环语句的工作原理,通过示例展示了其在定时任务、持久运行程序和防止脚本中断中的应用,包括后台运行、screen命令和nohup的使用。同时,还给出了使用while循环进行计数和求和的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当型循环和直到型循环:

循环语句常用于重复执行一条指令或一组指令,直到条件不满足时停止。

在企业实际应用中,常用于守护进程或者持续运行的程序。

while语法结构:

while 条件
do
  指令...
done

while循环语句对后面的条件表达式进行判断,如果条件表达式成立,就执行while循环体中的民工或者语句,每次执行到done时候,就重新判断while条件表达式是否成立,直到条件表达式不成立时才会跳出while循环体。如果一开始条件表达式不成立,那么程序就不会进入循环体中执行命令了。

示例1: 每隔2秒输出一次系统负载uptime。

[root@vm1 scripts]# cat while1.sh
#!/bin/bash

while true
do
   uptime
   sleep 2
done

执行结果:

[root@vm1 scripts]# sh while1.sh
 20:37:01 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
 20:37:03 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
 20:37:05 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
 20:37:07 up  3:49,  1 user,  load average: 0.00, 0.01, 0.05
^C

while true 表示的是永远为真,因此会一直运行,象死循环一样,但是我们称呼为守护进程。

示例2:

[root@vm1 scripts]# cat while2.sh
#!/bin/bash

while true
do
   uptime >> /tmp/uptime.log
   sleep 2
done

执行情况:

[root@vm1 scripts]# sh while2.sh &
[1] 1983
[root@vm1 scripts]# tail -f /tmp/uptime.log
 20:44:23 up  3:56,  1 user,  load average: 0.00, 0.01, 0.05
 20:46:19 up  3:58,  1 user,  load average: 0.00, 0.01, 0.05
 20:46:21 up  3:58,  1 user,  load average: 0.00, 0.01, 0.05
 20:46:23 up  3:58,  1 user,  load average: 0.00, 0.01, 0.05
 20:46:25 up  3:58,  1 user,  load average: 0.00, 0.01, 0.05

在实际的工作中,一般会通过客户端ssh连接到服务器,因此可能会在脚本或者命令执行期间不能中断的需求,若中断,则会前功尽弃,更要命的是破坏系统数据。

防止脚本执行中断的方法:

1)sh while2.sh &   使用&在后台运行脚本。

2)screen命令;

3)nohup sh while2.sh &   使用nohup加&在后台运行脚本。

示例3: 使用while竖向打印54321。

[root@vm1 scripts]# cat while3.sh
#!/bin/bash
i=5
while [ $i -gt 0 ]
do
   echo "$i"
   ((i--))
done

执行结果:

[root@vm1 scripts]# sh while3.sh
5
4
3
2
1

示例4: 计算从1到100之和。

[root@vm1 scripts]# cat while4.sh
#!/bin/bash
#
i=1
sum=0
while [ $i -le 100 ]
do
  ((sum=sum+i))
  ((i++))
done

printf "totalsum is: $sum\n"

执行结果:


[root@vm1 scripts]# sh while4.sh
totalsum is: 5050

代码说明:正常输出使用echo就能输出,使用printf可以显示比较格式化一点的字符串信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值