2013-05-21 39 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`