2014-10-06 201 views
0

我正在尋找一種方法將字符串添加到bash中的變量名稱中,並將其評估爲新變量。例如:Bash中變量變量的變化

#!/bin/bash 
file="filename" 
declare ${file}_info="about a file" 
declare ${file}_status="status of file" 
declare ${file}_number="29083451" 

echo ${${file}_info} # <-- This fails with error: "bad substitution" 

有沒有辦法做到這一點?

我實際上並沒有在任何地方的任何生產代碼中實現這個。我只想知道是否有某種方法可以使用變量和字符串創建變量名稱。這似乎是一個有趣的問題。

另請注意,我是而不是問關於bash間接尋址,這是使用${!x}來評估變量的內容作爲變量。

+0

它看起來像在http://stackoverflow.com/questions/8435256/use-string-as給出的EVAL方法-variable-name-in-bash-script可能就是你正在尋找的那個。 – jpe 2014-10-06 21:54:55

+1

間接常見問題解答告訴您如何編寫,而不僅僅是如何閱讀,所以它實際上是同一主題。 – 2014-10-06 22:09:17

+0

同意。正如我已經審查過評論和答覆,似乎必須在解決方案中涉及間接性。我希望有另一種方式,但是如果在這個過程中使用間接方法,似乎至少有一種解決方案。 – vastlysuperiorman 2014-10-06 22:10:45

回答

0

你是不是問間接,但是這有什麼可以幫您:

info=$file\_info 
echo ${!info} 
+0

顯然我的編輯被拒絕了。看起來你的答案應該是'$ {!info}'而不是'$ {!name}'。我也曾希望在不使用像這裏使用的「信息」這樣的佔位符變量的情況下實現這一點,但您確實已經解決了這個問題。會接受你的答案。 – vastlysuperiorman 2014-10-06 22:51:35