我正在编写一个小脚本来检查主机是启动还是关闭。
until [ "$STATUS" -eq "0" ]
do
ping -c 1 192.168.0.3
echo The host is down
STATUS=`echo $?`
done
如果它 ping 一个启动的主机并退出直到循环,它应该将状态更改为 0。但它没有。即使我回显 $ 的价值?该值始终为零。
任何人都可以帮我解决这个问题吗?:)
提前致谢
你有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
您在保存状态后放置了 echo ,这就是您总是得到 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