linux - 函数 Shell 脚本无返回数据

标签 linux bash shell

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/

相关文章:

linux - Selenium 不会刷新 Jenkins 上的页面

bash - 如何使用域列表作为输入来更新配置文件?

python - 如何比较hdfs文件和unix文件?

linux - 两个管道程序,一个在另一个被杀死后继续运行

linux - 在 Unix 上编辑文本文件

linux - 抑制 `wc -l` 输出中的摘要信息

java - 如何终止从 shell 脚本运行的 JVM?

Bash - 如果变量未定义则强制错误

linux - 指向可执行文件的符号链接(symbolic link)不会启动应用程序,错误 : <symlink> doesn't exist

bash - 一个简单的 if/else bash 脚本,它对用户的是/否输入使用react?