我正在制作一个小脚本,用于检查主机是启动还是关闭。
until [ "$STATUS" -eq "0" ]
do
ping -c 1 192.168.0.3
echo The host is down
STATUS=`echo $?`
done
如果它ping了主机并且退出until循环,则应该将状态更改为0。但它没有。即使我回应了$的价值?该值始终为零。
任何人都可以帮我解决这个问题吗? :)
提前致谢
答案 0 :(得分:3)
echo The host is down
命令后你有ping
。因此$?
采用echo
命令的退出状态而不是ping
命令。
ping -c 1 192.168.0.3
STATUS=$?
if [ $STATUS -ne 0 ]; then
echo "The host is down"
fi
答案 1 :(得分:0)
在保存状态后放置了回声,这就是为什么你总是得到0:
ping -c 1 192.168.0.3
echo The host is down ## Always changes $? to 0
STATUS=`echo $?`
一种更好的方法可能是:
until ping -c 1 192.168.0.3; do
echo "The host is down"
done
更长的版本:
until ping -c 1 192.168.0.3; STATUS=$?; [ "$STATUS" -eq "0" ]; do
echo "The host is down"
done