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
}