我写了一个小bash脚本来检查我电脑上的互联网连接,它包含两个随时间变化的布尔变量。我的问题是…我如何比较两者?
我的代码(我想)相当直截了当,但它不断给我一个“互联网关闭”,我知道这是不对的。
我已经在linux终端上测试过了,我意识到我对布尔人的比较是不正确的,我只是好像想不通。
注意:如果我扩展if/then语句,我可以使程序工作……我只想知道如何使它按下面设置的方式工作。我不明白为什么布尔变量比较不能这样工作。
谢谢你的帮助!
代码:

prevStatus=false;
newStatus=true;

while true;
do
   ping -q -c1 www.google.com;
    pingStatus=$?;

    if (($pingStatus == 0));
    then newStatus=true;
    else newStatus=false;
    fi;

    if (($newStatus != $prevStatus)) && (($newStatus == true));
    then echo "internet OFF" >> logfile;
    else echo "internet ON" >> logfile;
    fi;

    prevStatus=$newStatus

    sleep 60s;

done;

最佳答案

prevStatus=false
newStatus=false

while true
do    ping -a www.google.com > /dev/null
pingStatus=$?

prevStatus=$newStatus
if [ $pingStatus == 0 ]
then newStatus=true
else newStatus=false
fi

if [ "$newStatus" != "$prevStatus" ]
 then
 if [ "$newStatus" == "true" ]
 then echo "internet ON"  >> logfile
 else echo "internet OFF" >> logfile
 fi
fi

prevStatus=$newStatus
sleep 60s
done

10-07 22:08