Bash while循环有两个字符串条件

时间:2013-07-09 00:04:41

标签: bash shell while-loop

我的bash脚本遇到了一些问题。我的脚本和其他东西是启动服务器,需要一些时间才能开始。为了对抗长时间的启动,我放入了一个查询服务器的while循环,看看它是否正在运行。

while [ $running -eq 0 ]; do
echo "===" $response "===";
if [ "$response" == "" ] || [ "$response" == *"404 Not Found"* ]; then
    sleep 1;
    response=$(curl $ip:4502/libs/granite/core/content/login.html);
else
   running=1;
fi
done

当退出循环时,$ response等于“404”字符串。如果是这样的话,那东西应该还在循环中,不应该吗?似乎我的循环过早退出。

2 个答案:

答案 0 :(得分:6)

[ .. ]与glob不匹配。使用[[ .. ]]

if [ "$response" == "" ] || [[ "$response" == *"404 Not Found"* ]]; then

答案 1 :(得分:0)

我不确定为什么我原来的剧本失败了。我认为这与我与HTML进行比较的事实有关。为了让我的脚本工作,我使用字符串长度而不是内容。使用以下比较器,一切都在游泳。

if [ -z "$response" ] || [ ${#response} -lt 100 ]; then

感谢您的帮助, 乔