While循环帮助bash

While循环帮助bash,bash,while-loop,Bash,While Loop,我有一个while循环,它试图将一个web链接卷曲一个学期。。我需要在其中添加一个“或”,这样我可以计算一段时间,这样如果页面从未出现,它就不会无限期地暂停脚本。这是我所拥有的,它不起作用 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

我有一个while循环,它试图将一个web链接卷曲一个学期。。我需要在其中添加一个“或”,这样我可以计算一段时间,这样如果页面从未出现,它就不会无限期地暂停脚本。这是我所拥有的,它不起作用

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循环并说start(不是我如何离开它,只是一个示例)。然而,当它第一次运行时,它应该看到我的curl=1,它不小于1,并结束while循环。。我做错了什么

编辑:解释我为什么这样做,以便有人可以解释为什么这样做是不好的做法/应该做什么


我正在启动jboss服务。这项服务可能需要3到6分钟的时间启动。所以我需要做两件事。检查状态页面是否出现(告知何时成功启动的最佳方式),如果出现时间超过8分钟,则停止检查,以便继续下一个服务。想法?

你要做的是继续尝试,而你还没有尝试过5次,但失败了。但那不是你写的

count=0
nb=0
而[$count-lt 5];做
nb=$(旋度-静音-M2 10.10.10.10:7001 | grep myterm | wc-l)
若[$nb-通用电气1];然后
echo“启动”
出口0
fi
echo“等待它启动…”
计数=$($count+1))
睡眠5
完成
echo“在$count次尝试后未启动”
出口1

您做了很多“错误”的事情(请理解“不是很好的做法”)。您是否希望暂停?你知道你的while中的条件是or条件吗?是的,我需要or。如果它能够卷曲页面并且返回的值大于0,或者如果计数达到5,我需要它来完成循环。我需要它,以便如果这些条件中的任何一个为真,while循环结束。请注意,
-silent
是4个不同的curl选项,而不仅仅是请求silent(它本身是
-s
,或者带有两个破折号的
-silent
)。您无意中传递的其他选项是
-i
,其中包括输出中的响应头
-l
,用于从ftp://URL中获取目录列表,在这里没有意义;和
-e
,它指定了一个
Referer
标题-在本例中为“nt”。这对我很有用。最后,我将代码从-o改为-a,效果很好。我想我误解了我自己的情况。我现在明白了,为什么会这样。非常感谢。