2016-03-28 7 views
0

Ich versuche das hervorragende Beispiel docker-haproxy von Centos nach Alpine zu übertragen.Übersetzung von Bash zu Ascheshell: wie Arrays durch Eingabe zu behandeln?

Ein Shell-Skript wird verwendet, um eine Liste von Werten, die dem Skript als Parameter übergeben werden, in ein Array zu schreiben und diese Werte sowie deren Index in eine Datei zu schreiben.

Die folgende Bauarbeiten in bash:

ServerArray=${SERVERS:=$1} 
... 
for i in ${ServerArray[@]} 
do 
    echo " " server SERVER_$COUNT $i >> /haproxy/haproxy.cfg 
    let "COUNT += 1" 
done 

aber nicht in Asche (oder sh):

syntax error: bad substitution 

Der Fehler bezieht sich

for i in ${ServerArray[@]} 

Linie Was die richtige ist Syntax hier? Ich schätze, die Linie

definiert nicht ein Array wie vorgesehen, aber googeln für lange hat mir nicht geholfen.

bash to sh (ash) spoofing sagt

sh offenbar keine Arrays hat.

Wenn ja, wie das Problem dann zu lösen?

Antwort

0

Ich glaube, ich mit dieser Konstruktion kann:

#!/bin/sh 
# test.sh 
while [ $# -gt 0 ] 
do 
    echo $1 
    shift 
done 

liefert

/ # ./test 172.17.0.2:3306 172.17.0.3:3306 
172.17.0.2:3306 
172.17.0.3:3306 

was, was ich brauche, um fortzufahren