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 }