2012-06-06 96 views
3

在bash,如果我有:查找變量值

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

現在我想通過$ X $y

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

如何查找與變量值名字$x

+0

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

+2

@ m0skit0 please,no eval - 它具有實質性的安全隱患,詳見http://mywiki.wooledge.org/BashFAQ/048。正確的方法,間接變量,記錄在http://mywiki.wooledge.org/BashFAQ/006 –

+0

一切都有好的和壞的用途。你只需要知道如何使用它。 – m0skit0

回答

7

見參數擴展的bash手冊中:

echo ${!x} 
0

使用evalindirect references而逸出外美元符號

eval echo "\${$x}" 

要分配給一個變量

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