嗨我想通過連接兩個其他變量來設置一個變量。在bash腳本中連接變量
例
A=1
B=2
12=C
echo $A$B
期望的結果是C
但是我得到的答案永遠是12
這可能嗎?
修訂 例
A=X
B=Y
D=$A$B
xy=test
echo $D
期望的結果是 「測試」
嗨我想通過連接兩個其他變量來設置一個變量。在bash腳本中連接變量
例
A=1
B=2
12=C
echo $A$B
期望的結果是C
但是我得到的答案永遠是12
這可能嗎?
修訂 例
A=X
B=Y
D=$A$B
xy=test
echo $D
期望的結果是 「測試」
它看起來像你想要indirect variable references。
BASH讓你間接擴展參數 - 也就是說,一個變量可以包含另一個變量的名稱:
# Bash realvariable=contents ref=realvariable echo "${!ref}" # prints the contents of the real variable
但作爲Pieter21表示他的評論12
不是有效變量名。
感謝您的回覆,但這不是我想要做的。我試圖通過使用變量來調用變量 – user3246938 2014-09-22 16:43:49
是的,這就是它的作用。它可以讓你構造一個變量,其內容是另一個變量的名稱以獲取值。試試'realvariable = contents;一個=實; B =變量; REF = $ A $ B;回聲「$ {!ref}」'。 – 2014-09-22 16:48:41
是的,這只是我想要的。感謝您的支持 – user3246938 2014-09-22 16:59:53
由於12
是不是一個合法的變量名,這裏是用字符串變量的例子:
> a='hello'
> b='world'
> declare my_$a_$b='my string'
> echo $my_hello_world
my string
不,這不是我想要做的。我只是試圖通過從兩個其他變量創建變量名來調用$ 12 – user3246938 2014-09-22 16:35:59
我想你需要一個動態變量,現在檢查答案。 – legends2k 2014-09-22 16:43:45
你所試圖做的是(幾乎)稱爲間接:http://wiki.bash-hackers.org/syntax/pe#indirection
...我做了一些快速測試,但它似乎不符合邏輯的做到這一點沒有第三個變量 - 你不能做連鎖間接直接作爲連接的變量/部分不會自己評估結果 - 您將不得不做另一次評估。我認爲先串聯它們可能是最簡單的。也就是說,你有機會重新思考你在做什麼。 哦,你不能使用數字(單獨或作爲起始字符)的變量名稱。
這裏,我們去:
cake="cheese"
var1="ca"
var2="ke"
# this does not work as the indirection sees "ca" and "ke", not "cake". No output.
echo ${!var1}${!var2}
# there might be some other ways of tricking it to do this, but they don't look to sensible as indirection probably needs to work on a real variable.
# ...this works, though:
var3=${var1}${var2}
echo ${!var3}
12不是一個變量,並且沒有理由爲什麼它會自動映射? – Pieter21 2014-09-22 16:30:33
不能是12個變量?我只是用它作爲例子。如果我們將12改爲XY – user3246938 2014-09-22 16:40:48
爲了更清楚(也許得到更好的答案),我建議你將這個問題的名稱改爲「按值查找bash變量名」,這是你「重新嘗試去做。 – 2014-09-22 16:41:09