假设我有一些bash
数组:
A1=(apple trees)
A2=(building blocks)
A3=(color television)
索引J=2
,如何获取A2
的数组内容?
答案 0 :(得分:20)
我已经找到了解决方案,可以通过以下方式完成:
$ Aref=A$J
$ echo ${!Aref}
building
$ Aref=A$J[1]
$ echo ${!Aref}
blocks
$ Aref=A$J[@]
$ echo "${!Aref}"
building blocks
答案 1 :(得分:17)
值得注意的是,即使是在评估变量时也会替换索引:
$ A2=(building blocks)
$ Aref=A2[index]
$ index=1
$ echo "${!Aref}"
blocks
答案 2 :(得分:2)
今天(使用bash 4.3及更高版本),最佳做法是使用nameref支持:
A1=(apple trees)
A2=(building blocks)
A3=(color television)
J=2
declare -n A="A$J"
printf '%q\n' "${A[@]}"
...将正确发出:
building
blocks
这也可以在ksh93上以nameref A="A$J"
的形式获得。有关详细信息,请参阅BashFAQ #6。