如何用 korn shell 中的变量替换数组名称?
How to substitute array name with variable in korn shell?
我有两个数组: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
}
目前我有两个不同的函数,一个用于数组"options",另一个用于数组"args"
我想用变量替换第 1 行和第 2 行中的数组名称(上面代码中的"options"),这样我就可以像下面这样调用来打印任何数组的内容:
dispArr options #print the contents of array "options"
dispArr args #print the contents of array "args"
我尝试提供 $1 来代替数组名称,但没有成功。
我也尝试了不同的报价,但它也没有用。
我是 unix 和 shell 脚本的新手,所以任何建议都将不胜感激。
提前致谢。
隆隆声
dispArr() { nameref arr=; printf "%s\n" "${arr[@]}"; }
Qishq
dispArr() { eval printf "%s\\n" "${[@]}"; }
我有两个数组: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
}
目前我有两个不同的函数,一个用于数组"options",另一个用于数组"args"
我想用变量替换第 1 行和第 2 行中的数组名称(上面代码中的"options"),这样我就可以像下面这样调用来打印任何数组的内容:
dispArr options #print the contents of array "options"
dispArr args #print the contents of array "args"
我尝试提供 $1 来代替数组名称,但没有成功。 我也尝试了不同的报价,但它也没有用。
我是 unix 和 shell 脚本的新手,所以任何建议都将不胜感激。 提前致谢。
隆隆声
dispArr() { nameref arr=; printf "%s\n" "${arr[@]}"; }
Qishq
dispArr() { eval printf "%s\\n" "${[@]}"; }