#!/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,然后代码可以工作&当不符合要求时,也可以尝试,但是在尝试过程中进行更新时,如果不停止并继续尝试值匹配,请在错误的地方纠正我。
答案 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