代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

为函数中数组的元素设置值

  •  2
  • Tim unnamed eng  · 技术社区  · 15 年前

    在bash脚本中,我想将以下代码(为多个数组的每个元素赋值)放入一个函数中

    for (( i=0 ; i < ${#themes[@]} ; i+=1 )); do  
      c_bit_mins[i]=-5  
      c_bit_maxs[i]=15  
      gamma_bit_mins[i]=-15  
      gamma_bit_maxs[i]=3  
    done
    

    例如

    function set_values()
    {
    for (( i=0 ; i < ${#themes[@]} ; i+=1 )); do  
      c_bit_mins[i]=-5  
      c_bit_maxs[i]=15  
      gamma_bit_mins[i]=-15  
      gamma_bit_maxs[i]=3  
    done
    }
    

    如何做到这一点?尤其是当这些数组在函数内部不被视为全局数组时。

    谢谢和问候!

    2 回复  |  直到 15 年前
        1
  •  2
  •   Peter Eisentraut    15 年前

    您可以使用 local 命令:

    local c_bit_mins c_bit_maxs gamma_bit_mins gamma_bit_maxs
    

    但是,不能从shell函数中“返回”数组。shell函数的返回值始终是整数。非整数值通常通过回显它们并使用 $(...) 在周围的程序中。但对于数组和其中四个数组,这将是完全奇怪的。

        2
  •  1
  •   Dennis Williamson    15 年前

    数组是全局的,除非您声明它们是本地的。

    $ unset a
    $ test() { echo ${a[3]}; a[4]=456; }
    $ a[3]=123
    $ test
    123
    $ echo ${a[4]}
    456
    $ echo ${a[3]}
    123