我有两个数组: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脚本的新手,所以任何建议都会受到赞赏。 提前谢谢。
答案 0 :(得分:1)
ksh93的
dispArr() { nameref arr=$1; printf "%s\n" "${arr[@]}"; }
ksh88
dispArr() { eval printf "%s\\\\n" "\${${1}[@]}"; }