2015-08-13 54 views
1
function ping { 
nome=$(dialog --title "Inform o endereço que deseja PINGAR" --inputbox "IP ou URL - \ 
    Lembrando que será disparado 10 pings para o endereço informado." 10 45 --stdout) 
status=$? 
if [[ $status -eq 0 ]]; then 
    ping -c 10 $nome 
    rc=$? 
    if [[ $rc -eq 0 ]]; then 
     echo "#####################################" 
     echo "## Endereço: $nome | Status: UP" 
     echo "#####################################" 
    else 
     echo "#####################################" 
     echo "## Endereço: $nome | Status: DOWN" 
     echo "#####################################" 
    fi 
else 
    echo "Você optou por cancelar a operação." 
fi }; valor=`ping`; echo "RESULTADO FOI: "$valor 

當我運行腳本(./meuscript.sh),我沒有回報,只有當我選擇取消對話框。功能外殼腳本沒有返回數據

如果我運行的腳本,而不將函數,命令正確執行

回答

3

你有一個無限循環。重命名功能,別的東西,這樣你就不會ping調用ping調用ping調用ping結束了......

此外,你可能要大幅重構你的腳本。任何看起來像

command 
if [[ $? == 0 ]]; then 
    stuff 
fi 

比較好寫

if command; then 
    stuff 
fi 

所以你最終的東西,如

function renamed_ping { 
    if nome=$(dialog --title "Inform o endereço que deseja PINGAR" --inputbox "IP ou URL - \ 
    Lembrando que será disparado 10 pings para o endereço informado." 10 45 --stdout); then 
     if ping -c 10 "$nome"; then 
      status="UP" 
     else 
      status="DOWN" 
     fi 
     echo "#####################################" 
     echo "## Endereço: $nome | Status: $status" 
     echo "#####################################" 
    else 
     echo "Você optou por cancelar a operação." 
    fi 
} 

echo "RESULTADO FOI: $(renamed_ping)" 

我也冒昧地補充proper quoting,並分解出不必要的變量並去除凹痕中的不規則部分。

(具有功能echo東西,捕捉它,所以你可以echo它仍然是一個壞的氣味,但隨後這看起來像你的第一個腳本演習之一。)

+0

完美,感謝你的幫助。你說得對,我還在學習! –