当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何将数组传递给Bash函数?》经验,为你挑选了1个好方法。

我有一个Bash脚本,我无法弄清楚如何引用变量.任何帮助将不胜感激.

这段代码很完美:

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

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

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

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

myfunction BASE_ARRAY

ghoti.. 7

我从来没有成功将数组传递给函数.

对我来说,两个选项总是将内容传递给一个函数,或者(自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 -n就像declare -n它不提供数组的本地副本,而是提供原始内容的本地指针.在此示例中,如果更改$arr[],则实际上是在更改原始数组$a[].

将数组内容传递给函数的传统方法已在StackOverflow上多次描述,几乎没有提到; 你找到例子没有困难.



1> ghoti..:

我从来没有成功将数组传递给函数.

对我来说,两个选项总是将内容传递给一个函数,或者(自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 -n就像declare -n它不提供数组的本地副本,而是提供原始内容的本地指针.在此示例中,如果更改$arr[],则实际上是在更改原始数组$a[].

将数组内容传递给函数的传统方法已在StackOverflow上多次描述,几乎没有提到; 你找到例子没有困难.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有