eval и массивы

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
v4567
Сообщения: 162
ОС: Devuan

eval и массивы

Сообщение v4567 »

Есть несколько массивов:
[code=Bash]
mas1=(1 2 3 4 5)
mas2=(6 7 8 9 0)
mas3=(a s d f g)
[code]

Не получается перебрать массивы меняя их коэффициент и скопировать один массив в другой.
[br]
Делаю это вот так:
[code=Bash]
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
[code]

Перебрал уже много вариантов:
[code=Bash]
eval MASSIV=("${$zk[@]}")
eval MASSIV=("${\$zk[@]}")
eval MASSIV=("${'$'zk[@]}")
eval MASSIV=( ${"$zk"[@]} )
и т. д.
[code]
но выдаёт ошибку или копируется только первый элемент массива.
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: eval и массивы

Сообщение nerve »

Shell

#!/bin/bash mas1=(1 2 3 4 5) mas2=(6 7 8 9 0) mas3=(a s d f g) declare -a massive for(( i=1 ; i<4 ; i++ )) do # option 1 eval pz="$"{mas${i}[@]} massive+=( ${pz[@]} ) # option 2 #pz=mas$i[@] #massive+=( ${!pz} ) done echo ${massive[@]} $ ./array.sh 1 2 3 4 5 6 7 8 9 0 a s d f g


ps. теме вроде место в Погружении - Работа в командной строке
Спасибо сказали:
Ответить