2013-05-21 40 views
0

我有一個shell腳本,基本上創建一個虛擬機,我用它來做一些處理。該虛擬機會獲得一個隨機IP地址,我使用VMwares vmrun實用程序獲取該IP地址。該機器可能需要10到20秒的時間才能分配IP地址,該IP地址不是默認的Windows apipa地址。這是等待IP地址10秒的有效方法嗎?

有時我得到一個算術錯誤,其他時間我不......這個代碼有什麼錯?爲什麼它間歇性地工作?

IP=`vmrun -T ws readVariable MY_VM guestVar ip` 
if [ ! -z `echo $IP | grep "169.254"` ] 
then 
    i=0 
    while [ ! -z `echo $IP | grep "169.254"` ] 
    do 
    if [ $i -eq 10 ] 
    then 
     echo "$IP has been unresponsive for 10 seconds. Now quitting." 
     exit 1 
    else 
     sleep 1 
     i=$((i++)) # This is where the error occurs 
     IP=`vmrun -T ws readVariable MY_VM guestVar ip` 
    fi 
    done 
fi 

有沒有更好的方法來做到這一點?

錯誤消息:

arithmetic expression: expecting primary: "i++" 
+0

應該轉移到超級用戶我認爲 –

+0

@Petter我也討論過,但那些失敗的代碼呢? –

+0

你收到了什麼錯誤? – fedorqui

回答

3

$看起來是多餘的,你可以簡單地使用((i++))沒有分配遞增變量。

3

而不是i=$((i++))你可以嘗試:

i=`expr $i + 1`