2017-09-04 29 views
1

我正试图在bash中编写一个脚本,用于为同一应用程序的多个实例执行相同的操作 - 在不同的端口上运行。我目前的做法是使用这样一个数组:bash - 数组键名中的冒号

INSTANCES=('localhost:50010' 'localhost:50011' 'localhost:50012') 
for INSTANCE in ${INSTANCES[@]}; do 
    A["$INSTANCE"]="$(do stuff with $INSTANCE)" 
    B["$INSTANCE"]="$(do more stuff with $INSTANCE)" 
done 

击似乎拒绝这个,因为在数组键名冒号:

bash: localhost:50010: syntax error in expression (error token is ":50010") 

我想这是得到的东西做的Shell Parameter Expansion或类似的东西。有没有什么方法可以实现我在尝试而不操纵$INSTANCE的内容?

在此先感谢!

回答

2

冒号非常被接受为关联数组的数组键名。

你只需要首先声明你的关联数组:

declare -A A B 
+1

有时是最明显和最简单的东西,可以让你发疯。谢谢。 – David