我有一個shell腳本這樣,如何將一個字符串與一個變量連接到Bash中的新變量?
#!/bin/bash
foxy1="foxyserver"
H="1"
和輸出應該是foxyserver。
我想這一點,
echo $foxy$H
,這給了我
1
,然後我用
str="foxy$H"
echo $str
輸出
我怎麼能這樣做?
我有一個shell腳本這樣,如何將一個字符串與一個變量連接到Bash中的新變量?
#!/bin/bash
foxy1="foxyserver"
H="1"
和輸出應該是foxyserver。
我想這一點,
echo $foxy$H
,這給了我
1
,然後我用
str="foxy$H"
echo $str
輸出
我怎麼能這樣做?
使用indirect variables, as described in BashFAQ #6:
$ foxy1="foxyserver"
$ H="1"
$ varname="foxy$H"
$ echo "${!varname}"
foxyserver
使用eval,你可以做間接:
eval echo \$$str
輸出
foxyserver
警告:這是不是真的很好的做法。例如,如果您有str=(rm -rf ~/*)
,那麼評估表達式將是$(rm -rf ~/*)
。因此,請按照Charles Duffy的建議提醒和使用間接性。
從安全的角度來看,這是不好的做法。間接變量只能讓你命名一個要擴展的變量,而eval可以讓你的變量的內容完成任何事情。 –
+1免責聲明。男孩,我有很多要學習! –
+1 ..感謝您的鏈接。我不知道。 :) –