0

我的 ping 功能似乎在循环。
有人知道为什么吗?

bash-x 输出:

++ PING='ping -q -c1'
++ ping -q -c1 -q
++ TEMPIP=-q
++ PING='ping -q -c1'
++ ping -q -c1 -q
++ TEMPIP= -q
++ PING='ping -q -c1'
++ ping -q -c1 -q
++ TEMPIP=-q
++ PING='ping -q -c1'

代码:

IP1="10.1.1.2"
IP2="10.1.1.3" 
IP3="10.1.1.4"
SEC=300

function ping {
   TEMPIP="$1"
   PING="ping -q -c1"

   ${PING} ${TEMPIP}

   if [ $? -ne 0 ]
   then 
       echo 1
   else
       echo 0
   fi

}

  function resetrouter {
  #dosomething
}

function check {
    IP1result=$(ping $IP1)
    IP2result=$(ping $IP2)
    IP3result=$(ping $IP3)
}

查看

4

2 回答 2

4

因为你已经调用了它ping,并且你要运行的命令的名称也被称为ping,这意味着它正在递归地执行函数,而不是调用实际调用的命令ping

将函数重命名为ping其他名称。

于 2013-10-27T10:45:50.463 回答
0

如果要调用函数ping,则应使用ping函数内部命令的完整路径。您可以通过以下方式找到此信息:

$ which ping
/usr/bin/ping

所以PING="ping -q -c1"会变成PING="/usr/bin/ping -q -c1"

于 2013-10-27T10:48:39.087 回答