我有一个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上多次描述,几乎没有提到; 你找到例子没有困难.
我从来没有成功将数组传递给函数.
对我来说,两个选项总是将内容传递给一个函数,或者(自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上多次描述,几乎没有提到; 你找到例子没有困难.