我有一个while循环试图卷曲一个术语的weblink ..我需要在其中添加一个“或”,所以我可以计算一段时间,所以如果页面永远不会出现,它只是不会无限期地停止脚本。这就是我所拥有的,这是行不通的。
count=0
while [ $count -lt 5 -o `curl -silent -m 2 10.10.10.10:7001 | grep myterm | wc -l` -lt 1 ]; do
echo "Waiting for it to start"
count=$(($count + 1))
sleep 5
done
echo "started"
我知道我的curl工作并且在页面启动时返回1,并且计数部分工作正常,如果它循环5次,它结束while循环并说开始(不是我如何离开它,只是一个例子)。然而,它第一次运行时,它应该看到我的curl = 1,它不小于1,并结束while循环..我做错了什么?
编辑:要解释我为什么这样做,所以有人可以解释为什么这是不好的做法/做什么。
我正在开始一个jboss服务。此服务可能需要3到6分钟才能开始。所以我需要做两件事。检查状态页面是否出现(最好的方式告诉它何时成功启动),如果需要超过8分钟,则停止检查以便它可以继续进行下一个服务。想法?
答案 0 :(得分:1)
您尝试做的是在尚未尝试5次而失败 时继续尝试。但你没有写那个。
count=0
nb=0
while [ $count -lt 5 ]; do
nb=$(curl -silent -m 2 10.10.10.10:7001 | grep myterm | wc -l)
if [ $nb -ge 1 ]; then
echo "Started"
exit 0
fi
echo "Waiting for it to start..."
count=$(($count + 1))
sleep 5
done
echo "Didn't start after $count tries"
exit 1