Shell Loop直到问题

时间:2018-09-17 07:50:39

标签: bash shell sh

#!/bin/bash
chk_qos=Yes

down_report=180
up_report=350

if [ "$chk_qos" = "Yes" ];
then

    echo "Measure The Bandwidth"

until [ $down_report -ge 200 ] && [ $up_report -ge 200 ];

do
    echo "Starting QoS, Please Wait..."
    sleep 5

done

else
    echo "Service Not Enabled..."
fi

我想如果两个变量值都大于或等于200,然后执行其他操作,直到达到该值,现在的问题是当值匹配时,我的意思是两个变量值都大于或等于200,然后代码可以工作&当不符合要求时,也可以尝试,但是在尝试过程中进行更新时,如果不停止并继续尝试值匹配,请在错误的地方纠正我。

2 个答案:

答案 0 :(得分:0)

您需要在循环中执行一些更改条件的操作。例如,

until [ $down_report -ge 200 ] && [ $up_report -ge 200 ];

do
    echo "Starting QoS, Please Wait..."
    sleep 5
    down_report=$(( down_report + 1))
    up_report=$(( up_report + 1 ))
done

这只是一个示例,但它说明了以下一点:如果任一变量小于200,则需要在循环体内执行某些操作以增加其中至少一个,或者增加循环条件(开始时为false )总是为假。最重要的是,如果您期望的那样,脚本外部不会修改这些变量。

答案 1 :(得分:-1)

如果您的要求是在大于或等于200时停止,否则重试,则代码应如下所示

    until [ $down_report -lt 200 ] && [ $up_report -lt 200 ];
 do
 echo "Starting QoS, Please Wait..." 
sleep 5 
done 

所做的更改是-lt