Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.233.219.31] |
|
Сообщ.
#1
,
|
|
|
Есть несколько массивов:
mas1=(1 2 3 4 5) mas2=(6 7 8 9 0) mas3=(a s d f g) Не получается перебрать массивы меняя их коэффициент и скопировать один массив в другой. [br] Делаю это вот так: mas1=(1 2 3 4 5) mas2=(6 7 8 9 0) mas3=(a s d f g) declare -a MASSIV per="mas" for(( i=1 ; i<4 ; i++ )) do zk=$per$i eval MASSIV=("${zk[@]}") done Перебрал уже много вариантов: eval MASSIV=("${$zk[@]}") eval MASSIV=("${\$zk[@]}") eval MASSIV=("${'$'zk[@]}") eval MASSIV=( ${"$zk"[@]} ) и т. д. но выдаёт ошибку или копируется только первый элемент массива. |
Сообщ.
#2
,
|
|
|
не понял, что вы хотели сделать, но eval-уировать надо так.
суть - готовим строк, куоторую надо выполнить. #!/bin/sh mas1=(1 2 3 4 5) mas2=(6 7 8 9 0) mas3=(a s d f g) declare -a MASSIV per="mas" for(( i=1 ; i<4 ; i++ )) do eval zk='$'{$per$i[@]} eval MASSIV=( ${MASSIV[@]} $zk ) done echo ${MASSIV[@]} на выходе это 1 2 3 4 5 6 7 8 9 0 a s d f g Добавлено упс... второй eval можно убрать, он лишний в данном случае. Добавлено ну или вот так zk=$per$i eval MASSIV=( ${MASSIV[@]} '$'{$zk[@]} ) |