首页 > 代码库 > while与unile

while与unile

当型循环和直到型循环语法

while 条件句

语法:

while  条件

    do

    指令...

done


until 条件句

语法:

until  条件

    do

    指令...

done


范例1:每隔2秒记录一次系统负载情况

#!/bin/bash
while true
do
uptime
sleep 2
done

执行结果:
 16:28:15 up 7 days,  6:47,  2 users,  load average: 0.06, 0.03, 0.00
 16:28:17 up 7 days,  6:47,  2 users,  load average: 0.06, 0.03, 0.00
 16:28:19 up 7 days,  6:47,  2 users,  load average: 0.06, 0.03, 0.00
 16:28:21 up 7 days,  6:47,  2 users,  load average: 0.05, 0.02, 0.00 
 
 提示:while true表示条件永远为真,因为会一直运行,像死循环一样,但是我们称呼为守护进程
 
 sh while01.sh &   #此执行是在后台执行


范例2:通过while语句计算从1加到100之和

法1
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ] 
do
  let sum=sum+i
  let i=i+1
done
echo $sum
 

执行结果:
[root@XCN while]# sh while2.sh 
5050
法2
#!/bin/bash
i=1
sum=0
while ((i < 101))
do
  ((sum=sum+i))
  ((i++))
done
echo $sum

思路:

   

+ i=0

+ sum=0

+ ‘[‘ 0 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 1 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 2 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 3 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 4 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 5 -le 5 ‘]‘

+ let sum=sum+i

+ let i=i+1

+ ‘[‘ 6 -le 5 ‘]‘

+ echo 15

15


范例3:利用while循环打印出10,9,8....1

#!/bin/bash
i=10
while ((i>0))
do
  echo $i
  let i=i-1
done


执行结果:
[root@XCN while]# sh while4.sh 
10
9
8
7
6
5
4
3
2
1

    

范例4:手机充值10,每发一次短信(输出当前余额)话费1角5分钱,当余额低于1角5分钱不能发短信,提示余额不足,请充值;

解答:单位换算。统一单位,统一成整数

10元=1000分

#!/bin/bash
sum=1000
i=15
while ((sum>=i)) 
do
 ((sum=sum-i))
  echo "send message.$sum" 
done
echo ",epmty is not enough:$sum"


执行结果:
end message.325
send message.295
send message.265
send message.235
send message.205
send message.175
send message.145
send message.115
send message.85
send message.55
send message.25
,epmty is not enough:10



本文出自 “小菜鸟” 博客,请务必保留此出处http://baishuchao.blog.51cto.com/12918589/1943253

while与unile