52

私は変数を持っていて、$foo="something"使用したいと思います:

bar="foo"; echo $($bar)

「何か」を響かせる。

4

4 に答える 4

95

bash では、${!variable}可変変数を使用するために使用できます。

foo="something"
bar="foo"
echo "${!bar}"

# something
于 2012-05-25T15:49:08.250 に答える
8

eval echo \"\$$bar\"それをするでしょう。

于 2012-05-25T15:44:52.573 に答える
7

受け入れられた答えは素晴らしいです。ただし、@Edison は、配列に対して同じことを行う方法を尋ねました。トリックは、配列が「!」で展開されるように、「[@]」を保持する変数が必要なことです。変数をダンプするには、この関数を確認してください。

$ function dump_variables() {
    for var in "$@"; do
        echo "$var=${!var}"
    done
}
$ STRING="Hello World"
$ ARRAY=("ab" "cd")
$ dump_variables STRING ARRAY ARRAY[@]

これは以下を出力します:

STRING=Hello World
ARRAY=ab
ARRAY[@]=ab cd

just として指定するとARRAY、最初の要素が によって展開されたものとして表示され!ます。フォーマットをARRAY[@]指定すると、配列とそのすべての値が展開されます。

于 2014-08-06T18:10:49.070 に答える