shell脚本编程—for,while,嵌套循环

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

shell脚本编程—for,while,嵌套循环_第1张图片

执行结果如下:
shell脚本编程—for,while,嵌套循环_第2张图片

例2:倒计时
shell脚本编程—for,while,嵌套循环_第3张图片

在这里插入图片描述

若上题修改为用户输入时间:分:秒,开始倒计时

[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

shell脚本编程—for,while,嵌套循环_第4张图片
在这里插入图片描述

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

shell脚本编程—for,while,嵌套循环_第5张图片

在这里插入图片描述

嵌套循环

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

shell脚本编程—for,while,嵌套循环_第6张图片

shell脚本编程—for,while,嵌套循环_第7张图片

你可能感兴趣的:(shell脚本编程—for,while,嵌套循环)