gpt4 book ai didi

bash - namerefs (declare -n) 可以与 bash 中的数组一起使用吗?当它说声明 -n 不能应用于数组时,文档是什么意思?

转载 作者:行者123 更新时间:2023-12-03 21:29:24 30 4
gpt4 key购买 nike

在 stackoverflow 的另一个问题中,我询问了如何将数组传递给函数。一个答案向我推荐了以前的答案。
一个答案表明,使用 -n 选项声明,引用,对于将数组传递给函数很有用,如下所示,

declare -a array=( 1 2 )

function array_pass_by_reference_func() {
local -n aug=${1:-dummy}
echo "pass by reference : array[0] = ${aug[0]}"
echo "pass by reference : array[1] = ${aug[1]}"
echo "pass by reference : array = ${aug[@]}"
}

# execute an example function above
array_pass_by_reference_func "array"

# output
pass by reference : array[0] = 1
pass by reference : array[1] = 2
pass by reference : array = 1 2

它看起来运行良好。
我的问题是关于 bash 手册中声明 -n 的指令,

The -n attribute cannot be applied to array variables.

我想确认我可以将数组传递给带有声明 -n 选项的函数吗?
我原来的问题被标记为重复,上一个问题太旧了,不能问这个问题。所以请让我在这里问。
非常感谢。

最佳答案

进一步向下man页面,下PARAMETERS标题,它还说:

However, nameref variables can reference array variables and subscripted array variables.



换句话说:
  • 您不能将 nameref 变量本身声明为数组(declare -a -n foo=... 将导致语法错误)。
  • 但是 nameref 变量可以引用数组。

  • 因此,您的方法应该是安全的。

    关于bash - namerefs (declare -n) 可以与 bash 中的数组一起使用吗?当它说声明 -n 不能应用于数组时,文档是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40593740/

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