名前の代わりにインデックス変数の数値を返します。 [重複]

名前の代わりにインデックス変数の数値を返します。 [重複]

以下のコードは私の問題を示しています。最初は過度に単純化したようです。

#!/bin/bash
dogLover=1
catLover=2
for ii in dog cat
    do
        petLover=${ii}Lover
        echo (evaluate $petLover)
    done

犬や猫ではなく、1と2の値を返すコードが欲しいです。おそらくこれは簡単ですが、オンラインで行う方法がわからないようです。

私にとって本当に必要なのは、matlabの「eval」コマンドに対応するbashです。

ベストアンサー1

Bourne または POSIX シェルで逆参照するには、次のようにします。

dogLover=1
ii=dog
eval "petLover=\${${ii}Lover}"
echo "$petLover"

おすすめ記事