看!!灰机

博客园 首页 联系 订阅 管理

while循环

vwhile CONDITION; do 

 循环体  

 done

vCONDITION:循环控制条件;进入循环之前,先做一次判 断;每一次循环之后会再次做判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环 v因此:CONDTION一般应该有循环控制变量;而此变量的值 会在循环体不断地被修正 v进入条件:CONDITION为true

v退出条件:CONDITION为false

 

 

监控程序 是否在线。上面这图是监控http服务是否 开启。

 

Ss -nt 监控网络

 

监控网络之后查看不良记录,是否提出禁用部分超额ip。里面的num 和ip 都是变量,通过空格隔开。    

 

如果不满足这个条件就进入60秒休眠状态,就什么都不操作,等待下一次运行

 

这是被禁用的IP。

 

解除被禁用的ip。

 

显示 链接失败的ip。

While 是运行判断正确无限循环。

 

 

 

特殊用法

vwhile循环的特殊用法(遍历文件的每一行):

  while read line; do  

循环体

创建无限循环

 vwhile true; do

 

done < /PATH/FROM/SOMEFILE

v双小括号方法,即((…))格式,也可以用于算术运算

v双小括号方法也可以使bash Shell实现C语言风格的变量操作

 I=10

 ((I++))

计算1到10的和

i=1
sum=0
while ((i<=10));do
    let sum+=i
    let ++i
done
echo $sum

读取文件
经典的用法是搭配重定向输入,读取文件的内容。
打印出使用bash的用户

while read line;do
    bashuser=`echo $line | awk -F: '{print $1,$NF}' | grep 'bash' | awk '{print $1}'`
    #jugement Bashuser is null or not and print the user who use bash shell
    if [ ! -z $bashuser ];then
        echo "$bashuser"
    fi
done < "/etc/passwd"

通过管道传递给{}(同样适用于其他语句)
通过管道把命令组丢给{}
打印出使用bash的用户

cat /etc/passwd | {
while read line;do
    #use if statement jugement bash shell user  and print it
    if [ "`echo $line | awk -F: '{print $NF}'`" == "/bin/bash" ];then
        bashuser=`echo $line | awk -F: '{print $1}'`
        echo "$bashuser"
    fi
done
}


 

posted on 2017-12-23 17:47  看!!灰机  阅读(2021)  评论(0编辑  收藏  举报