Linux

Bash - 如何在變數名中使用變數

  • August 22, 2018

是的,是的,我知道你可能會說“嘿,還有數百人問同樣的問題”,但那不是真的;我不想做這樣的事情:

foo="example1"
bar="example2"
foobar="$foo$bar"

我正在嘗試這樣做:

foo="example1"
$foo="examle2"

但是每當我嘗試這樣做時,我都會收到一條錯誤消息,上面寫著:

bash: example1=example2: command not found

有什麼建議麼?這甚至可能嗎?

這裡有些例子:

declare [-g] "${foo}=example2"
declare -n foo='example1'
foo='example2'
eval "${foo}=example2"
mapfile -t "${foo}" <<< 'example2'
printf -v "${foo}" '%s' 'example2'
IFS='' read -r "${foo}" <<< 'example2'
typeset [-g] "${foo}=example2"

正如其他使用者所說,一般要小心eval間接分配。

可以使用eval.

eval $foo="examle2"

請注意,您應該非常確定 的值是$foo可以信任的。

更好的替代方法是使用索引數組,這樣您就不會冒險執行任意命令。

引用自:https://unix.stackexchange.com/questions/464225