2015-10-20 154 views
1

這個替換有什麼問題。變量內的變量

$ m_d_ver=0.2 
$ m=mod 
$ d=dom 
$ echo ${$m_$d_ver} 
-bash: ${$m_$d_ver}: bad substitution 

感謝,

+0

「這個語法有什麼問題?」 - 錯,它不是語言的實際語法?你有沒有找到任何文件或參考文件讓你認爲最初的提案會被允許? –

回答

3

什麼你想要做的是一個間接的變量查找。其語法是${!namevar},其中namevar是一個包含您實際想要評估的名稱的變量。因此:

mod_dom_ver=0.2 
m=mod 
d=dom 
var=${m}_${d}_ver 
echo "${!var}" 

請參閱BashFAQ #006

+0

謝謝,這是什麼!標誌 ? – user2230605

+0

這是告訴shell進行間接查找。 –

+0

順便說一句,這裏需要花括號,因爲'_'是一個shell變量名中的有效字符,所以如果你寫了'var = $ m_ $ d_ver',shell會試圖展開'$ {m_}'並且'$ {d_ver}'。 –