shell脚本——while循环语句(包含应用案例)

Posted stan Z

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本——while循环语句(包含应用案例)相关的知识,希望对你有一定的参考价值。

while循环语句

while循环语法结构

while 表达式
    do
        command...
    done

while  [ 1 -eq 1 ] 或者 (( 2 > 1 ))
  do
     command
     command
     ...
 done
 
 当条件测试成立(必须为真),返回值为0才能执行循环体

应用案例

计算1-100偶数和

#!/bin/bash
#定义变量
sum=0
i=2
while [ $i -le 100 ]
do
    let sum=$sum+$i
    let i+=2
done
echo "1-100的偶数和为:$sum"

# for
#!/bin/bash
sum=0
for ((i=0;i<=100;i+=2))
do
    let sum=$sum+$i 
done
echo "1-100的偶数和为:$sum"

同步系统时间

  • 写一个脚本,30秒同步一次系统时间,时间同步服务器192.168.188.188
  • 如果同步失败,则进行邮件报警,每次失败都报警
  • 如果同步成功,也进行邮件通知,但是成功100次才通知一次
#!/bin/bash
# 该脚本用于时间同步
NTP=10.1.1.1
count=0
while true
do
    ntpdate $NTP &>/dev/null
    if [ $? -ne 0 ];then
        echo "system date failed" |mail -s "check system date"  root@localhost
    else
        let count++
        if [ $count -eq 100 ];then
        echo "systemc date success" |mail -s "check system date"  root@localhost && count=0
        fi
    fi
sleep 30
done

直角三角形

#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
        j=1 
        while [ $j -le $i ]
        do
                echo -n "*"
                let j++ 
        done
        echo
        let i++ 
done 

等腰三角形

#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
        a=$[ $h - $i ]
        j=1 
        while [ $j -le $a ]
        do
                echo -n " "
                let j++ 
        done

        b=$((2*$i - 1 ))
        k=1 
        while [ $k -le $b ]
        do
                echo -n "*"
                let k++ 
        done
        echo
        let i++
done

倒等腰三角形

#!/bin/bash
read -p "请输入三角形的高:" h
i=1
while [ $i -le $h ]
do
        j=1 
        while [ $j -le $i ]
        do
                echo -n " "
                let j++ 
        done

        k=0 
        a=$(( 2*($h-$i) - 1 ))
        while [ $k -lt $a ]
        do
                echo -n "*"
                let k++ 
        done
        echo
        let i++
done

菱形

#!/bin/bash
# by stanZ
read -p "请输入菱形半径:" h
i=1
while [ $i -le $h ]
do
        a=$[ $h -$i ]
        j=1 
        while [ $j -le $a ]
        do
                echo -n " "
                let j++ 
        done

        b=$((2*$i - 1))
        k=1 
        while [ $k -le $b ]
        do
                echo -n "*"
                let k++ 
        done
        echo
        let i++
done

u=1
while [ $u -lt $h ]
do
        for((n=1;n<=$u;n++))
        do
                echo -n " "
        done

        l=$(( 2*($h-$u)-1 ))
        for((m=1;m<=$l;m++))
        do
                echo -n "*"
        done
        echo
        let u++
done


批量创建用户

我们将需要创建的用户名和密码写入文件中 使用while遍历创建

假设文件是ip.txt
maomao 123
zhuzhu 456
niuniu 789
#!/bin/bash
#while create user
#v1.0 by stanZ 2020-12-17
if [ $# -eq 0 ];then
        echo "usage:`basename $0` file"
        exit 10
fi

if [ ! -f $1 ];then
        echo "error file"
        exit 5
fi

while read line
do
        user=`echo $line |awk 'print $1'`
        pass=`echo $line |awk 'print $2'`
        id $user &>/dev/null
        if [ $? -eq 0 ];then    
                echo "$user already exists"
        else
                useradd $user
                echo "$pass" |passwd --stdin $user &>/dev/null
                if [ $? -eq 0 ];then
                        echo "$user is created."
                fi
        fi
        done < $1

测试网段存活主机

ping3次 如果都失败 则判断主机没有存活

#!/bin/bash
while read ip
do
        fail_count=0
        #for i in `seq 3`
        for i in 1..3
        do  
                ping -c1 -W1 $ip &>/dev/null
                if [ $? -eq 0 ];then
                        echo "$ip ping is ok."
                        break
                else
                        echo "$ip ping is failure:$i"
                        let fail_count++
                fi  
        done
        if [ $fail_count -eq 3 ];then
                echo "$ip ping is failure!!!"
        fi  
done <ip.txt

以上是关于shell脚本——while循环语句(包含应用案例)的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本--------while循环语句

shell脚本应用

Shell脚本应用

循环语句和函数

for / while / until 基础循环语句案例图解 shell编程之循环语句

Shell脚本----循环!