在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
}
怎么做?特别是当这些数组在函数内部不被视为全局时。
谢谢和问候!
答案 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