2

ある名前の変数を自動的に作成し、それに値を割り当てるコードがあります。コードは次のようなものです。

myVariableName="zappo"
eval "${myVariableName}=zappo_value"

自動的に生成された変数の名前を使用して、この変数の値にアクセスするにはどうすればよいですか?だから、私は次のようなコードを探しています(しかし機能しています):

eval "echo ${${myVariableName}}"

(... myVariableValue = "$(eval" echo $ {$ {myVariableName}} ")" ...などで使用される場合があります)。

助けてくれてありがとう

このアプローチが狂気であり、より一般的なアドバイスを提供したい場合、私が取り組んでいる一般的なアイデアは、${usage}や${prerequisiteFunctions}などの名前でライブラリ内の関数に変数を定義することです。関数内で定義されたこれらの変数は、たとえば、前提条件などがインストールされていることを確認できる問い合わせ関数によってアクセスされます。したがって、この問い合わせ関数内のループは次のようになります。

for currentFunction in ${functionList}; do
    echo "function: ${currentFunction}"
    ${currentFunction} -interrogate # (This puts the function variables into memory.)
    currentInterrogationVariables="${interrogationVariables}" # The variable interrogationVariables contains a list of all function variables available for interrogation.
    for currentInterrogationVariable in ${currentInterrogationVariables}; do
        echo "content of ${currentInterrogationVariable}:"
        eval "echo ${${currentInterrogationVariable}}"
    done
done

アイデアをありがとう!

4

2 に答える 2

3

試す:

echo ${!myVariableName}

名前が含まれている変数をエコーし​​ます$myVariableName

例えば:

#!/bin/bash

VAR1="ONE"
VAR2="TWO"

VARx="VAR1"

echo ${VARx}   # prints "VAR1"
echo ${!VARx}  # prints "ONE"
于 2012-09-07T02:33:09.457 に答える
3

IIRC、bashでの間接参照はによる!ので、試してみてください${!myVariableName}

于 2012-09-07T02:33:57.567 に答える