BASH中的变量变量

Say*_*ndo 1 variables bash

我想在bash中询问有关变量变量的一些帮助.我已经阅读了一些关于它的文章,但就我而言,我不知道该怎么做.让我看看我的问题:

该数组包含其他数组的名称,我想打印这些数组的值.在内心,我需要变量变量.

#!/bin/bash
declare -a array=(dir1 dir2 dir3)
declare -a dir1=(1 2 3)
declare -a dir2=(a b c)
declare -a dir3=(9 8 7)

for elem1 in "${array[@]}"
do
  for elem2 in "${variableVariable[@]}"
  do
    echo "$elem1 : $elem2"
  done
done
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的

dir1 : 1
dir1 : 2
dir1 : 3
dir2 : a
dir2 : b
dir2 : c
dir3 : 9
dir3 : 8
dir3 : 7

Bar*_*mar 7

这可以使用bash的间接变量功能来完成.

for elem1 in "${array[@]}"
do
  elems=$elem1'[@]'
  for elem2 in "${!elems}"
  do
    echo "$elem1 : $elem2"
  done
done
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个bash扩展,它不能移植到其他shell.