gpt4 book ai didi

arrays - 如何将数组传递给 Bash 函数?

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

我有一个 Bash 脚本,我不知道如何在其中引用变量。任何帮助将不胜感激。

此代码完美运行:

myfunction() {
for i in "${BASE_ARRAY[@]}"
do

我想将我的数组名称作为变量传递给函数,以便我可以将它与其他数组一起使用。这是我尝试失败的代码:

myfunction() {
for i in "${$1[@]}"
do

然后我将以下内容传递给函数:

myfunction BASE_ARRAY

最佳答案

我从未成功地将数组传递给函数。

对我来说,这两个选项总是将 content 传递给一个函数,或者(自 bash 4.3 起)传递一个将使用引用访问的数组名称。考虑以下示例。

#!/usr/bin/env bash

myfunc() {
local -n arr=$1
printf '%s\n' "${arr[1]}"
arr[1]=HELLO
}

a=(one two three)

myfunc a
printf '%s\n' "${a[1]}"

产生:

$ ./sample
two
HELLO

请注意,local -ndeclare -n 类似,因为它不提供数组的本地副本,而是指向原始内容的本地指针。在此示例中,如果您更改 $arr[],您实际上是在更改原始数组 $a[]

将数组内容传递给函数的传统方法在 StackOverflow 上已经被描述了很多次,几乎不值得一提;你会毫不费力地找到例子。

关于arrays - 如何将数组传递给 Bash 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41731740/

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