2013-10-27 72 views
0

我的ping函數似乎循環。
有人知道爲什麼嗎?BASH:ping函數循環

擊-X輸出:

++ PING = '平-q -c1'
++平-q -c1 -q
++ TEMPIP = -q
++ PING = '平-q -c1'
++平-q -c1 -q
++ TEMPIP = -q
++ PING = '平-q -c1'
++平-q -c1 - q
++ TEMPIP = -q
++ 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

因爲你可以把它叫做ping,並且要運行的命令的名稱是也稱爲ping,這意味着它遞歸執行該函數,而不是調用名爲ping的實際命令。

將函數ping重命名爲某個其他名稱。

+1

或者,你可以使用內置的命令'command'繞過功能。但這對於代碼混淆非常有用;重命名更好。 – torek

0

如果您要打電話給您的功能ping,那麼您應該使用函數內的ping命令的完整路徑。您可以通過調用發現了這一點:

$ which ping 
/usr/bin/ping 

所以PING="ping -q -c1"將成爲PING="/usr/bin/ping -q -c1"