0

我有一个 shell 脚本,它基本上创建了一个我用来做一些处理的 vm。这个虚拟机有一个随机的 IP 地址,我使用 VMwaresvmrun实用程序获得。机器可能需要 10 到 20 秒的时间才能获得一个不是默认 Windows 地址的 IPapipa地址。

有时我得到一个算术错误,而其他时候我没有......这段代码有什么问题?为什么它会间歇性地工作?

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++"
4

2 回答 2

3

而不是i=$((i++))你可以尝试:

 i=`expr $i + 1`
于 2013-05-21T13:22:26.937 回答
3

$看起来它是多余的,您可以简单地使用没有((i++))赋值来增加变量。

于 2013-05-21T13:22:48.973 回答