2017-09-04 1 views
1

Ich versuche, ein Skript in bash zu schreiben, das die gleichen Dinge für mehrere Instanzen der gleichen Anwendung - auf verschiedenen Ports ausgeführt wird. Mein aktueller Ansatz war ein Array zu verwenden, etwa so:bash - Doppelpunkt in Array Schlüsselname

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 scheint dies abzulehnen, da ein Doppelpunkt in dem Feld Schlüsselname ist:

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

Ich denke, das hat etwas mit dem zu tun, Shell Parameter Expansion oder etwas ähnliches. Gibt es eine Möglichkeit zu erreichen, was ich versuche, ohne den Inhalt von zu manipulieren?

Vielen Dank im Voraus!

Antwort

2

Doppelpunkt wird als Array-Schlüsselname für assoziatives Array sehr akzeptiert.

Sie müssen nur Ihre erste assoziative Arrays deklarieren:

declare -A A B 
+1

Manchmal sind es die naheliegendste und einfache Dinge, die Sie verrückt machen kann. Vielen Dank. – David

Verwandte Themen