Bash - 如何在变量名中使用变量

Ano*_*ous 1 linux bash variable

是的,是的,我知道您可能会说“嘿,还有数百人在问同样的问题”,但事实并非如此;我不想做这样的事情:

foo="example1"
bar="example2"
foobar="$foo$bar"
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样做:

foo="example1"
$foo="examle2"
Run Code Online (Sandbox Code Playgroud)

但是每当我尝试这样做时,我都会收到一条错误消息:

bash: example1=example2: command not found
Run Code Online (Sandbox Code Playgroud)

有什么建议?这甚至可能吗?

nxn*_*nev 6

这里有些例子:

declare [-g] "${foo}=example2"
Run Code Online (Sandbox Code Playgroud)
declare -n foo='example1'
foo='example2'
Run Code Online (Sandbox Code Playgroud)
eval "${foo}=example2"
Run Code Online (Sandbox Code Playgroud)
mapfile -t "${foo}" <<< 'example2'
Run Code Online (Sandbox Code Playgroud)
printf -v "${foo}" '%s' 'example2'
Run Code Online (Sandbox Code Playgroud)
IFS='' read -r "${foo}" <<< 'example2'
Run Code Online (Sandbox Code Playgroud)
typeset [-g] "${foo}=example2"
Run Code Online (Sandbox Code Playgroud)

正如其他用户所说,eval通常要小心使用间接分配。