我在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是出乎意料的。我是新手,所以非常感谢任何帮助。
答案 0 :(得分:2)
问题是您使用不支持脚本正在使用的功能的shell(即Dash)来运行脚本(即Bash样式的数组)。
最简单的解决方法是更改此内容:
#!/bin/sh
到此:
#!/bin/bash
以便您的脚本使用Bash而不是Dash运行。
答案 1 :(得分:1)
/ bin / bash是/ bin / sh的超集...这个数组语法适用于bash。
https://superuser.com/questions/125728/what-is-the-difference-between-bash-and-sh
答案 2 :(得分:1)
在shell脚本数组中应该提到
击:
declare -a varname
varname=( 192.168.1.1 192.168.1.2 192.168.1.2 )
你可以通过
获得所有ipecho "${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