На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила трёх "С"
Пожалуйста,
1. Соблюдайте правила Форума.
2. Слушайте советы Модераторов.
(например, http://forum.sources.ru/index.php?act=ST&f=7&t=80382 )
3. Сверяйтесь с учебником по Великому и Могучему
  
> eval и массивы
    Есть несколько массивов:
    ExpandedWrap disabled
      mas1=(1 2 3 4 5)
      mas2=(6 7 8 9 0)
      mas3=(a s d f g)


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


    Перебрал уже много вариантов:
    ExpandedWrap disabled
      eval MASSIV=("${$zk[@]}")
      eval MASSIV=("${\$zk[@]}")
      eval MASSIV=("${'$'zk[@]}")
      eval MASSIV=( ${"$zk"[@]} )
      и т. д.

    но выдаёт ошибку или копируется только первый элемент массива.
      не понял, что вы хотели сделать, но eval-уировать надо так.
      суть - готовим строк, куоторую надо выполнить.

      ExpandedWrap disabled
        #!/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[@]}

      на выходе это
      ExpandedWrap disabled
        1 2 3 4 5 6 7 8 9 0 a s d f g


      Добавлено
      упс... второй eval можно убрать, он лишний в данном случае.

      Добавлено
      ну или вот так

      ExpandedWrap disabled
          zk=$per$i
          eval MASSIV=( ${MASSIV[@]} '$'{$zk[@]} )
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0339 ]   [ 16 queries used ]   [ Generated: 28.03.24, 12:52 GMT ]