如何存储传递给函数KSH的数组?

时间:2017-04-20 18:58:11

标签: ksh

由于我们在KSH中有动态范围,我们可以从被调用的函数中访问变量值。但我没有存储这些值。请帮忙。

#!/bin/ksh
fun1(){
eval echo "\${$1[@]}"
}
fun2(){
set -A var1 val1 val2 val3 val4
fun1 var1
}
fun2

我想在新数组中存储 eval echo" \ $ {$ 1 [@]}" 的值。我试过如下。

fun1(){
set -A array1 `eval echo "\${$1[@]}"`
echo " ${array[@]} "
}

但不工作。如何存储这些值。

1 个答案:

答案 0 :(得分:2)

在ksh93函数中,您可以使用typeset -nnameref将局部变量定义为 namereference

$ function f1 { nameref a=$1; echo ${a[1]}; }
$ set -A arry fee fie foe fum
$ f1 arry
fie
$ set -A barry foo bar
$ f1 barry
bar

名称引用可以指向不同的类型:数组,关联数组(映射)等。