Shell while循环和until循环语句

while 循环语句的基本语法

代码语言:javascript
复制
while <条件表达式>
do
    指令...
done

示例:显示每分钟负载情况

代码语言:javascript
复制
#!/bin/bash
while true
do
    uptime >> uptime.txt  
    sleep 5
done

  • 系统显示时间 22:29:31
  • up 6 days 距上次启动开始系统运行时间
  • 1 user 一个连接数
  • load average 分别表示1分钟 5分钟 15 分钟系统的平均负载

示例:打印54321

代码语言:javascript
复制
#!/bin/bash
i=5
while (( i > 0 ))
do
    echo "$i"
    (( i-- ))
done
#或者用以下
#while [ $i -gt 0 ]
#do
#    echo "$i"
#    (( i-- ))
#done

until 循环是不成立进行循环

代码语言:javascript
复制
#!/bin/bash
i=5
until (( i < 1 ))
do
    echo "$i"
    (( i-- ))
done
#until [ $i -lt 1 ]
#do
#    echo "$i"
#    (( i-- ))
#done

示例:计算100以内的和

代码语言:javascript
复制
#/bin/bash
i=1
sum=0
while (( i <=100 ))
do
    (( sum+=i ))
    (( i++ ))
done
[ "$sum" -ne 0 ] && printf "$sum\n"
#while [ $i -le 100 ]
#do
#    (( sum+=i ))
#    (( i++ ))
#done
#[ "$sum" -ne 0 ] && printf "$sum\n"

示例:检测网站状态

代码语言:javascript
复制
#!/bin/bash
read -p "请输入一个网址:" web    #判断是否输入网址
[ -z "$web" ] && echo "输入错误" && exit
#if [ $# -ne 1 ]; then
#    echo "请输入一个网址"
#    exit 1
#fi
while true
do
 if [ `curl -o /dev/null --connect-timeout 5 -s -w "%{http_code}" $web|egrep -w "200|301|302"|wc -l` -ne 1 ]  对传入的url进行状态过滤 如果不等于1则表示状态不对
then
    echo "$web is error"
else
    echo "$web is ok"
fi
sleep 3
done