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

时间:2010-01-31 14:35:51

标签: bash function arrays

在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 个答案:

答案 0 :(得分:2)

您可以使用local命令创建一个本地变量:

local c_bit_mins c_bit_maxs gamma_bit_mins gamma_bit_maxs

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

答案 1 :(得分:1)

除非您将它们声明为本地数组,否则这些数组是全局的。

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