我编写了一个小脚本,添加从配置文件中获取的特定 IP 地址,然后将其放入列表中:
WAS_IP=$(grep "<was_ip>" $CONFIG| cut -d '>' -f 2 | cut -d '<' -f 1 | xargs)
NODES=()
NODES+=("$WAS_IP")
在 bash 上,3.2.25
这工作正常,但在3.0
我的生产环境中,这会出现错误:
./config.sh: line 3154: syntax error near unexpected token `"$WAS_IP"'
./config.sh: line 3154: ` NODES+=("$WAS_IP")'
我怎样才能避免这个问题?
答案1
该+=
运算符出现在 Bash 3.1 版本中。
在旧版本中,如果数组不是稀疏的,您可以分配给数组最后一个元素之后的元素:
NODES[${#NODES[@]}]="$WAS_IP"
如果您在某个位置附加新值,则可以使用单独的计数器变量:
NODES=() NODES_length=0 NODES[NODES_length++]="$WAS_IP"
但这比用 询问数组的长度要快一些
${#NODES[@]}
。或者您可以将整个数组分配给现有元素和新元素:
NODES=("${NODES[@]}" "$WAS_IP")
不用说,最好避免后一种情况。如果数组最初是稀疏的,则数组索引将在分配后发生变化。