2012-04-03 2 views
1

Это близко, но у меня возникли проблемы со ссылкой на второй массив в моем цикле. Каким должен быть синтаксис? $ Пункт возвращается "1" вместо "а, б, в или г"Синтаксис сценария оболочки: имя переменной в ссылочный массив

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 

ответ

5

Вы можете сделать что-то вроде этого:

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 

Бег:

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

Кредиты:

+0

спасибо icyrock, я следую за свой код. –

+0

Несомненно, рад помочь! –

Смежные вопросы