虽然循环帮助bash

时间:2013-10-30 17:04:09

标签: bash while-loop

我有一个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分钟,则停止检查以便它可以继续进行下一个服务。想法?

1 个答案:

答案 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