您的位置:首页 > 其它

if,for,while用法及 练习

2017-12-30 16:14 489 查看
If 条件判断
if COMMANDS; then COMMANDS; 2、[ elif COMMANDS; then COMMANDS; ]... 3、[ else COMMANDS; ] 4、fi

单分支:如果if COMMANDS为真,执行then COMMANDS; 忽略2、3,执行4、fi 结束
双分支:如果 1、if COMMANDS; then COMMANDS;不为真,将执行 2、elifCOMMANDS; then COMMANDS; ]... 可以是多条语句,忽略3,执行4、fi 结束
多分支:如果 1和2 判断条件不为真,执行3、[ else COMMANDS; ] 4、fi 结束
语法格式:
单分支

If 判断条件;then
条件代码
fi
双分支

If 判断条件;then
条件代码
else 判断条件;then
条件代码
fi

多分支
If 判断条件;then
条件代码
elif 判断条件;then
条件代码
elif 判断条件;then
条件代码
elif 判断条件;then
以上条件代码不成立执行
fi

for 循环

for: for NAME [in WORDS ... ] ; do COMMANDS; done
for 变量名 in 列表;do
循环体
done
依次将列表中的元素赋给”变量名”,每次赋值后即执行一次
循环体;直到列表中的元素耗尽,循环结束。

实例:

#!/bin/bash
sum=0
for i in {1..100};do
sum $[sum+i]
done
echo $sum

while 循环

while COMMANDS; do COMMANDS; done
Whlie 条件;do
循环体
done
进入循环前,先做一次判断;每一次循环之后再次判断;条件
为”ture”,则执行一次循环;直到条件为”false”终止循环
进入条件:true 永远为ture就一直循环
退出条件:false
实例:
死循环:while true;do sleep 1;echo true;done
监控http服务:
Systemctl stop httpd

#!/bin/bash
sleeptime=30
while true;do
if killall -0 httpd &> /dev/null;then
true
else
systemctl restart httpd
time=
date +"%F %T"

echo "At $time httpd is restarted" >> /app/httpd.log

使用while循环当ip访问连接本机三次以上将拒绝访问。
#!/bin/bash
sleeptime=10
while true;do
ss -nt|grep ESTAB|tr -s " " :|cut -d: -f6|sort|uniq -c|while read num ip;do
if [[ "$num" -gt 3 ]];then
iptables -A INPUT -s $ip -j REJECT
fi
done
sleep $sleeptime
done
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  If 条件 判断