有一个2 bash脚本文件。第一个文件b.sh
如下所述。
#!/bin/bash
declare -a arr1=()
func() {
var_a=12
arr1[0]=20
arr1[1]=30
declare -a arr2=()
arr2[0]=40
arr2[1]=50
}
下面提到了第二个文件a.sh
。
#!/bin/bash
source b.sh
func
echo $var_a
echo ${arr1[1]}
echo ${arr2[1]}
输出
12
30
我怀疑的是,arr2
中无法访问func
中的本地数组变量(a.sh
)。但是可以访问局部变量var_a
。
答案 0 :(得分:4)
arr2
是一个局部变量,因为它是使用declare
创建的。如Bash Manual中所述:
在函数中使用时,
declare
使每个名称都是本地名称,与local
命令一样,除非使用-g
选项。
由于您未使用var_a
创建declare
,因此分配会创建一个全局变量,因此可以在功能之外访问它。如果你写了:
declare var_a=12
或
local var_a=12
在函数内部,那就是本地的。