2012-04-03 16 views
1

Das ist in der Nähe, aber ich habe Probleme beim Verweis auf das zweite Array in meiner Schleife. Wie sollte die Syntax aussehen? $ Item zurückkehrt "1" statt "a, b, c oder d"Shell-Skript-Syntax: Variablenname zu Referenz-Array

colors=(teal purple pink red green darkblue skyblue) 
teal=(a b c d) 


for color in ${colors[@]} 
do 
    echo $color 

    for item in ${#{$color}[@]} 
    do 
     echo $item 
    done 

done 

Antwort

5

Sie können etwas tun:

mkt.sh

colors=(teal purple pink red green darkblue skyblue) 
teal=(a b c d) 
purple=(x y z) 

for color in ${colors[@]} 
do 
    echo color: $color 

    declare -a 'vals=("${'"$color"'[@]}")' 
    for item in ${vals[@]} 
    do 
     echo "-- $item" 
    done 
done 

Running:

$ ./mkt.sh 
color: teal 
-- a 
-- b 
-- c 
-- d 
color: purple 
-- x 
-- y 
-- z 
color: pink 
color: red 
color: green 
color: darkblue 
color: skyblue 
$ 

Credits:

+0

Vielen Dank icyrock folge ich Ihren Code. –

+0

Sicher, gerne helfen! –