2012-06-06 2 views
3

В Баш, если у меня есть:Lookup значение переменной из строки в сценарии оболочки

y=10 
x='y' 
echo $x # prints 'y' 

Теперь я хочу, чтобы получить $y через $ х:

echo ${$x} # error: "bad substitution"; I want to print 10 

Как Lookup значение переменной с имя $x?

+0

Check [Eval] (http://www.linuxquestions.org/questions/programming-9/basic-bash-how-to-use-eval-to-evaluate-varia ble-names-made-of-any-strings-775622 /) – m0skit0

+2

@ m0skit0, пожалуйста, нет eval - это имеет существенные последствия для безопасности, как описано в http://mywiki.wooledge.org/BashFAQ/048. Правильный путь, косвенные переменные, задокументирован на http://mywiki.wooledge.org/BashFAQ/006 –

+0

Все имеет хорошие и плохие цели. Вы просто должны знать, как его использовать. – m0skit0

ответ

7

См Параметр расширения в Баш руководстве:

echo ${!x} 
0

Использование eval для indirect references спасаясь внешний знак доллара

eval echo "\${$x}" 

Чтобы присвоить переменной

eval "z=\${$x}" 
echo "$z" 
# 10