2013-10-30 137 views
0

我有一個while循環,試圖蜷縮一個術語的weblink ..我需要添加一個「或」在它,所以我可以數了一段時間,以便如果頁面永遠不會出現,它不會無限期地拖延腳本。這是我的,那是行不通的。雖然循環幫助bash

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" 

我知道我的捲曲的作品,並在頁面了,且計數部分工作正常,如果它遍歷5次返回1,它結束了while循環,並說開始(我也不怎麼要離開它,只是一個例子)。然而,它第一次運行時,它應該看到我的curl = 1,它不小於1,並結束while循環..我做錯了什麼?

編輯:爲了解釋我爲什麼這樣做,所以有人可以解釋爲什麼它是不好的做法/做什麼,而不是。

我正在啓動一個jboss服務。此服務可能需要3到6分鐘才能開始。所以我需要做2件事。檢查狀態頁出現(告訴它何時成功啓動的最佳方式),如果出現超過8分鐘的時間,則停止檢查以便它可以轉到下一個服務。思考?

+1

你正在做很多事情「錯誤」(理解「不是很好的做法」)。 –

+0

您是否在尋找暫停? http://stackoverflow.com/questions/687948/timeout-a-command-in-bash-without-unnecessary-delay – freitass

+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 
+0

這對我有用。最後,我只是將我的代碼從-o更改爲-a,並且工作正常。我想我誤解了我自己的狀況。我現在明白爲什麼和工作。非常感謝。 – cashman04