在bash

时间:2017-07-13 21:50:54

标签: bash

我的脚本中有几个数组

a=(1 2 3)
b=(3 4 5)

用户输入要打印的列表。

./array.sh a

如何打印数组元素?

我尝试过以下操作但无法打印

array=$1
echo ${!array[@]}

2 个答案:

答案 0 :(得分:2)

您可以使用declare -n作为变量的命名参考,如下所示:

a=(1 2 3)
b=(3 4 5)

declare -n arr="${1?need an array name}"

printf "%s\n" "${arr[@]}"

然后执行:

./array.sh a
1
2
3

./array.sh b
3
4
5

答案 1 :(得分:1)

制作间接的[@]部分:

a=(1 2 3)

myfunction() {
  array="$1[@]"
  echo "${!array}"
}

myfunction a