for循环
for 条件
do
动作
done
####用法1:
for NUM in `seq 10` ###指定步长: `seq 1 2 10`
do
echo $NUM
done
####用法2:
for (i=0; i<=10; i++)
do
动作
done
例:检验网络状态
[root@station mnt]# cat net.sh
#!/bin/bash
#for((a=i;i>=50&&i<=55;i++))
for i in `seq 50 1 55`
#for i in {50..55}
do
ping -c1 -w1 172.25.254.$i &> /dev/null && echo 172.25.254.$i is up || echo 172.25.254.$i is down
done
若上题修改为用户输入时间:分:秒,开始倒计时
[root@station mnt]# cat time2.sh
#!/bin/bash
###将用户输入时间转换为秒
TIME=$1*60+$2
###为了便于实验,如果用户输入的时间大于60分钟,提示时间超出
if [ $1 -gt 60 ];then
echo "Timeout"
exit 1
fi
###倒计时
for ((i=$TIME;i>0;i--))
do
echo -n "Time $[ $i/60 ] : $[ $i%60 ] "
echo -ne "\r"
sleep 1
done
while循环
while 条件
do
动作
done
例:创建多个用户及密码
[root@station mnt]# cat user.sh
#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 5 ]
do
useradd ${PREFIX}$i &> /dev/null
echo "redhat" | passwd --stdin ${PREFIX}$i &> /dev/null
((i++))
done
嵌套循环
for (())
do
for(())
do
xxx
done
done
例:九九乘法表
[root@station mnt]# cat mul.sh
#!/bin/bash
for i in `seq 9`
do
for j in `seq $i`
do
echo -ne "$i*$j=$(($i*$j))\t"
done
echo -e "\n"
done