gpt4 book ai didi

bash - 将本地数组设置为其值

转载 作者:行者123 更新时间:2023-11-29 09:20:01 27 4
gpt4 key购买 nike

我有这两个功能:

function two() {
local -a -x var=( ${var[@]} )
echo "${var[@]}"
}
function one() {
local -a -x var=(11 22 33)
two
}

如果我调用一个,则不会打印任何内容。这是为什么?

最佳答案

nothing is print. Why is that?

这里你在两个函数中有相同的标识符名称 var您在 one 中定义的 var 可以被 two 访问,因为 two 是从 one 调用的>。然而,

when declaring and setting a local variable in a single command, apparently the order of operations is to first set the variable, and only afterwards restrict it to local scope.

所以在

 local -a -x var=( "${var[@]}" )

${var[@]} 部分将为空,因为变量 var 首先设置为本地。

要验证这一点,您可以将 one 中的变量名称更改为 var1 并在 two 中执行

local -a -x var=( "${var1[@]}" ) # var1 though local to one should be accessible here.

您可以使用@inian 的answer作为一种变通方法,可以轻松传递变量,而不必担心 bash 中的这些黑暗角落。

关于bash - 将本地数组设置为其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525432/

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