【问题标题】:set values to elements of an array in a function将值设置为函数中的数组元素
【发布时间】:2010-01-31 14:35:51
【问题描述】:

在 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
}

怎么做?尤其是当这些数组在函数内部不被视为全局时。

感谢和问候!

【问题讨论】:

    标签: bash function arrays


    【解决方案1】:

    您可以使用local 命令将变量设为局部变量:

    local c_bit_mins c_bit_maxs gamma_bit_mins gamma_bit_maxs
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-12
        • 2014-07-08
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-03-22
        相关资源
        最近更新 更多