if,for,while用法及 練習

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章