Linux
Bash - 如何在變數名中使用變數
是的,是的,我知道你可能會說“嘿,還有數百人問同樣的問題”,但那不是真的;我不想做這樣的事情:
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
可以信任的。更好的替代方法是使用索引數組,這樣您就不會冒險執行任意命令。