while循环语句

while条件句:条件满足一直执行。

语法:

while 条件

  do

  指令

done

untile条件句:条件满足就退出(不常用了解)

until 条件

  do

  指令

done

案例一:每隔2秒查看下服务器的负载相当于top命令

[root@www while]# cat while1.sh
#!/bin/bash
while true
do
uptime
sleep 2
done

#while true 表示永久为真,一直执行,死循环(守护进程)。

执行结果:

10:53:06 up 18:37,  2 users,  load average: 0.08, 0.23, 0.14

案例二:

#!/bin/bash
while true
do
uptime >> /root/while/test.log
# usleep 500 #微秒
usleep 10000000
done

 

扩展:

后台执行的方法:

[root@www while]# sh while2.sh &
[1] 54786

查看后台正在运行的进程

[root@www while]# jobs
[1]+ Running sh while2.sh &

将后台运行的放到前台执行

[root@www while]# fg 1
sh while2.sh

将一个后台运行的脚本使用fg 1放到前台运行,然后ctrl+z暂停,然后jobs查看。最后bg 1放在后台执行。然后fg1放到前台执行,最后ctrl+c停止。

 

 

while循环:计算从1+100总和

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

[ -n "$sum" ] && printf "totalsum is: $sum\n"

[ -n num ]:字符串不为空为真。

数字1到10正向反向打印

反向打印:

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

正向打印

i=1
while ((i<=10))
do
echo $i
((i++))
done

正向打印

i=1
#while [ $i -le 10 ]
while [[ i -le 10 ]]
do
echo $i
((i++))
done

#使用read读取数字,然后逐个减一。

read -t10 -p "please input the number: " i
while ((i--))
do
echo $i

done

 

#通过脚本传递参数的方式(反向打印)

i="$1"
while [ $i -gt 0 ]
do
echo $i
((--i))
done

 

untile命令:条件满足退出(正反打印)

#!/bin/bash
i=1
until ((i>10))
do
echo "$i"
((sun=sum+i))
((i++))
done

i=10
until ((i<=0))
do
echo "$i"
((sun=sum+i))
((i--))
done

 

while正式实例

使用curl检测一个网站状态是否为200

#!/bin/bash
while true
do
status=`curl -I -s --connect-timeout 10 $1|head -1|cut -d " " -f 2`
if [ "$status" == "200" ];then
echo "this url is ok !"
else
echo "this url is no !"
fi
sleep 2
done

 

升级版本

#!/bin/bash
. /etc/rc.d/init.d/functions
while true
do
status=`curl -I -s --connect-timeout 10 $1|head -1|cut -d" " -f 2`
if [ "$status" = "200" ];then
action "nginx this is yes !" /bin/true
else
action "nginx this is no !" /bin/false
fi
sleep 2
done

 

posted @ 2017-08-23 12:01  肖咏卓  阅读(536)  评论(0编辑  收藏  举报