gpt4 book ai didi

linux - Bash函数局部数组变量在被调用的地方不可访问

转载 作者:太空狗 更新时间:2023-10-29 11:41:15 25 4
gpt4 key购买 nike

有一个 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

我的疑问是,为什么func 中的局部数组变量(arr2) 在a.sh 中无法访问。但是局部变量 var_a 是可以访问的。

最佳答案

arr2 是局部变量,因为它是使用 declare 创建的。如 Bash Manual 中所述:

When used in a function, declare makes each name local, as with the local command, unless the -g option is used.

由于您没有使用declare 创建var_a,因此赋值会创建一个全局变量,因此可以在函数外部访问它。如果你写了:

declare var_a=12

local var_a=12

在函数内部,那么它将是本地的。

关于linux - Bash函数局部数组变量在被调用的地方不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48450897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com