while循环shell
vwhile CONDITION; do bash
循环体 网络
done测试
vCONDITION:循环控制条件;进入循环以前,先作一次判 断;每一次循环以后会再次作判断;条件为“true”,则执行 一次循环;直到条件测试状态为“false”终止循环 v所以:CONDTION通常应该有循环控制变量;而此变量的值 会在循环体不断地被修正 v进入条件:CONDITION为trueui
v退出条件:CONDITION为falsespa
监控程序 是否在线。上面这图是监控http服务是否 开启。3d
Ss -nt 监控网络code
监控网络以后查看不良记录,是否提出禁用部分超额ip。里面的num 和ip 都是变量,经过空格隔开。 blog
若是不知足这个条件就进入60秒休眠状态,就什么都不操做,等待下一次运行ip
这是被禁用的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 }