Bash 将默认getway分配给pc

Bash 将默认getway分配给pc,bash,Bash,我正在编写一个模块,将getway分配给pc。我一直在使用“路由”命令,但命令不起作用。我使用的代码是 echo type getway read gwn echo GETWAY: $gwn function valid_gwn() { local gw=$1 local stat=1 if [[ $gwn =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.

我正在编写一个模块,将getway分配给pc。我一直在使用“路由”命令,但命令不起作用。我使用的代码是

    echo type getway

    read gwn

    echo GETWAY: $gwn



    function valid_gwn()

    {

        local  gw=$1

        local  stat=1

        if [[ $gwn =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];
     then

            OIFS=$IFS

            IFS='.'

            gw=($gwn)

            IFS=$OIFS
            [[ ${gw[0]} -le 255 && ${gw[1]} -le 255 \
                && ${gw[2]} -le 255 && ${gw[3]} -le 255 ]]

            stat=$?

        fi

        return $stat
    }


    if [[ $? -eq 0 ]] && valid_gwn

    then

    echo good;

    else

    echo bad;

    fi



route add  default gw $gwn eth0 metric 1

请澄清我所犯的错误。

我认为我不必从我的结尾编译任何东西,因为有一个

我想,为了进行调试,您应该在设置路由之前回显
$gwn

很大程度上,如果在脚本中设置
$gwn
时没有发生错误,那么这个问题可能会在askubuntu的超级用户中被问到。

您会遇到什么错误?它说“SIOCADDRT:没有这样的过程”检查eth0接口是否处于启动状态:sudo ifconfig-yes它处于启动状态我已经测试了bash,它确实生成了正确的“route”命令,但是SIOCADDRT错误可能由多种原因引起,并且取决于您的网络配置,因此您需要调查原因。生成的命令是正确的,但是SIOCADDRT的原因可能不同,正如yo所指出的,所以这不是一个真正的bash问题。这是一个路由命令问题,需要根据链接进行调查。未将其添加为注释,我的回答属于注释。