1

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

出力は次のようになります

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

2 に答える 2

7

これは、bash の間接変数機能を使用して実行できます。

for elem1 in "${array[@]}"
do
  elems=$elem1'[@]'
  for elem2 in "${!elems}"
  do
    echo "$elem1 : $elem2"
  done
done

これは bash 拡張機能であり、他のシェルには移植できないことに注意してください。

于 2013-05-02T05:58:48.517 に答える