如何在korn shell中用变量替换数组名?

时间:2015-08-12 11:55:53

标签: shell unix ksh

我有两个数组:options和args,我想显示数组的内容。 为此,我希望编写一个通用函数,它将采用数组的名称并显示其内容。

例如。

set -A options val1 val2 val3
set -A args var1 var2 var3

我现在正在做什么来显示内容:

dispArr() {
    i=0
    while [ "$i" -lt "${#options[*]}" ] #line1
    do
        echo ${options[$i]} #line2
        ((i=i+1))
    done
}

目前我有两个不同的功能,一个用于数组“选项”,另一个用于数组“args”

我想用line1替换line1和line2中的数组名称(上面代码中的“options”),以便我可以像下面这样调用打印任何数组的内容:

dispArr options #print the contents of array "options"
dispArr args #print the contents of array "args"

我尝试提供$ 1代替数组名称,但它不起作用。 我也尝试了不同的引用,但它也没有用。

我是unix和shell脚本的新手,所以任何建议都会受到赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

ksh93的

dispArr() { nameref arr=$1; printf "%s\n" "${arr[@]}"; }

ksh88

dispArr() { eval printf "%s\\\\n" "\${${1}[@]}"; }