BASH:ping函数循环

时间:2013-10-27 10:42:21

标签: bash

我的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)
}

检查

2 个答案:

答案 0 :(得分:4)

因为您已将其命名为ping,并且您要运行的命令的名称也称为ping,这意味着它以递归方式执行该函数,而不是调用名为{{的实际命令1}}。

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

答案 1 :(得分:0)

如果要调用函数ping,则应使用函数内ping命令的完整路径。您可以致电:

找到这个
$ which ping
/usr/bin/ping

因此PING="ping -q -c1"将成为PING="/usr/bin/ping -q -c1"