一)for循環
循環體:要執行的代碼
進入條件:
滿足條件
退出條件:
不滿足條件
使用方法:
for 變量名 in 列表;do
循環體
done
案例:
#!/bin/bash
IP=$(cat /server/scripts/ip.txt | awk -F . '{print $4}')
for i in $IP ;do
ping -c 1 10.2.11.$i &>/dev/null
if [ $? -eq 0 ];then
echo "10.2.11.$i successful" >> /tmp/test2.log
fi
done
~
列表生成方式有如下
1) 讀取某個文件
2) 直接給出字符串列表(item01 item02 item03)
3) 使用步進({1..10})
4)使用 seq 首數 步進 尾數 ( $(seq 2 2 10))
5)使用ls 顯示列表,比如($(ls /var))
for file in $(ls /var);do
if [ -f /var/$file ];then
echo "a common file"
elif [ -d /var/$file ];then
echo "a dir file"
else
echo "other file"
fi
done
6) 變量引用 ($@,$*)
declare -i estab=0
declare -i listen=0
declare -i other=0
for state in $( netstat -tna|grep "^tcp\>"|awk -F' ' '{print $NF}');do
if [ "$state" == "ESTABLISHED" ];then
let estab++
elif [ "$state" == "LISTEN" ];then
let listen++
else
let other++
fi
done
echo "ESTABLISHED file you $estab"
echo "LISTEN file you $listen"
echo "OTHER file you $other"
#!/bin/bash
for file in $(ls /etc/rc.d/rc3.d/);do
cd /etc/rc.d/rc3.d/
if [ "${file:0:1}" == "K" ];then
echo "$file stop"
elif [ "${file:0:1}" == "S" ];then
echo "$file start"
else
echo "error"
fi
done
~
#!/bin/bash
mima=(
21029299
00205d1c
a3da1677
1f6d12dd
)
for i in {1..32767};do
name=$(echo $i | md5sum|cut -c -8)
for n in ${mima[*]};do
if [ "$name" == "$n" ];then
echo "$i match $n"
fi
done
done
~
二) while循環
while CONDITION;do
循環體
done
當CONDITION條件為真,則進入循環體,當條件為假,則退出循環體
#!/bin/bash
declare -i i=1
declare -i online=0
declare -i downline=0
while [ $i -lt 20 ];do
if ping -c 1 10.2.11.$i &>/dev/null ;then
echo "10.2.11.$i online"
let online++
else
echo "10.2.11.$i downline"
let downline++
fi
let i++
done
echo "online computer has $online"
echo "downline computer has $downline"
打印九九乘法口訣
#!/bin/bash
for j in {1..9};do
for i in $(seq 1 $j);do
echo -e -n "$[i]*$[j]=$[$i*$j]\t"
done
echo
done
declare -i i=0
declare -i j=0
while [ $j -le 9 ];do
while [ $i -le $j ];do
echo -n -e "$[i]*$[j]=$[$i*$j]\t"
let i++
done
echo
let i=1
let j++
done
continue 【N】 提前結束第N層的本輪循環,直接進入下一輪循環
break 【N】 提前結束循環
創建死循環