sh脚本中的IP地址数组

时间:2014-03-31 00:52:49

标签: arrays shell sh

我在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

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

4 个答案:

答案 0 :(得分:2)

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

最简单的解决方法是更改​​此内容:

#!/bin/sh

到此:

#!/bin/bash

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

答案 1 :(得分:1)

答案 2 :(得分:1)

在shell脚本数组中应该提到

击:

declare -a varname
varname=( 192.168.1.1 192.168.1.2 192.168.1.2 )

你可以通过

获得所有ip
echo "${varname[@]}"

echo "${varname[*]}"

答案 3 :(得分:-1)

您可以尝试以下代码,

#!/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