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
) 时,我没有返回,只有当我选择取消对话框时。
如果我在没有函数的情况下运行脚本,命令会正确执行
最佳答案
你有一个无限循环。将函数重命名为其他名称,这样您就不会以 ping
calling ping
calling ping
calling 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
它仍然是一种难闻的气味,但这看起来像是您的第一个脚本练习之一。)
关于linux - 函数 Shell 脚本无返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31979174/