2012-07-20 53 views
2

我正在研究一個posix腳本(Linux),它提取網頁,將內容存儲在變量中並查找字符串「SUCCESS」。如果找到字符串,則不應執行循環的內容,如果未找到該字符串,則應該一遍又一遍地執行循環,直到它爲止。我試圖使while循環的控制語句所有的捲曲和grep的東西發生,但我不知道是否有可能在所有的,到目前爲止,還沒有更迭:先進控制語句

while [ -z "site_status=`curl http://www.example.com/index.html | grep -o 'SUCCESS'`"  ]; 
do 
if [ `echo "$site_status" | grep -o 'WAIT'` ]; then 
    sleep 10s 
elif [ `echo "$site_status" | grep -o 'RETRY'` ]; then 
    sleep 10s 
else 
    exit 1 
done 

我希望腳本儘可能乾淨,所以我儘量避免創建一個將網頁內容保存在全局變量中的函數,並在while循環中使用此變量。

有關如何使上述while循環有效的任何建議?或者更好的清潔解決方案?

回答

0

這一個似乎做你問我的一切:

until { t=`curl http://www.example.com 2> /dev/null` && echo $t | grep -q SUCCESS; }; 
    do (echo $t | grep -q "\(WAIT\|RETRY\)" && sleep 10) || exit 1 
done 
+0

這是工作。謝謝 – tmp892 2012-07-21 02:24:22