while条件语句

while条件语句 (条件满足一直循环,适合做守护进程,死循环,while是读整行,for遇见空格就另起一行)

语法
while 条件
do
指令
done

案例:
每个2秒记录一次系统负载情况

while true; do 也可以写成 while :;do

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

注:while true表示条件永远为真,因此会一直循环下去,像死循环,我们称为守护进程

用while写一个脚本1+…100的和

#!/bin/bash
sum=0
i=1
while ((i<=100))
  do
  ((sum=sum+i))
  ((i++))
done
 echo "sum=$sum"

这种算法如果数很大,计算效果很慢,推荐使用求和公式((sum=100*(100+1)/2)) echo $sum
相加到1000000用time可以比对出时间
time ./while2.sh
sum=500000500000

real 0m7.463s
user 0m7.191s
sys 0m0.272s
#!/bin/bash
i=1000000
((sum=1000000*(1000000+1)/2))
echo $sum

time ./sum.sh
500000500000

real 0m0.004s
user 0m0.002s
sys 0m0.000s

while 读入文件用法:
格式:
while read line;do #通过read命令读取文件的每一行内容存入line变量中
………. #执行过程
done < /要导入的文件路径

案例:统计access_apache.log日志中所有行的日志各文件访问字节总量

#!/bin/bash
sum=0
while read line                   #用read读入每一行
  do
  size=`echo $line|awk '{print $10}'`
  [ "$size" == "-" ] && continue      #结束本次循环继续下面循环
  ((sum=sum+$size))
done<access_apache.log           #放在done后面可以读入文件         
[  -n "$size" ] && echo "$sum"

猜你喜欢

转载自blog.csdn.net/bjgaocp/article/details/110220917