【问题标题】:Array of IP addresses in sh scriptsh 脚本中的 IP 地址数组
【发布时间】:2014-05-10 05:25:57
【问题描述】:

我在我的 ubuntu 机器上使用一个简单的 shell 脚本时遇到了一些问题。这是脚本的第一部分:

#!/bin/sh
LCL="192.168.1.1/24"
VPN="10.0.0.0/12"
local_interface="eth0"
virtual_interface="tun0"
servers=(
199.315.117.225 
46.31.151.106 
46.31.154.82  
)

我这样运行脚本:

sudo sh script.sh

这是输出:

script.sh: 6: script.sh: Syntax error: "(" unexpected

据我所知,这是一个有效的数组,所以我不明白为什么这个括号是出乎意料的。我是新手,非常感谢任何帮助。

【问题讨论】:

    标签: arrays shell sh


    【解决方案1】:

    问题是您正在使用不支持脚本正在使用的功能(即 Bash 样式数组)的 shell(即 Dash)运行脚本。

    最简单的解决方法是改变这个:

    #!/bin/sh
    

    到这里:

    #!/bin/bash
    

    以便您的脚本使用 Bash 而不是 Dash 运行。

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        你可以试试下面的代码,

        #!/bin/sh
        LCL="192.168.1.1/24"
        VPN="10.0.0.0/12"
        local_interface="eth0"
        virtual_interface="tun0"
        ARRAY="199.315.117.225 46.31.151.106 46.31.154.82"
        
        for i in $ARRAY
        do
          echo $i
        done
        

        【讨论】:

        • 这只是打印一次。
        【解决方案4】:

        在shell脚本数组中应该提到

        重击:

        declare -a varname
        varname=( 192.168.1.1 192.168.1.2 192.168.1.2 )
        

        你可以得到所有的ip

        echo "${varname[@]}"
        

        echo "${varname[*]}"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多