Bash $ {!variable}

Oli*_*alo 8 bash

我在这个问题上摸不着头脑,找不到关于它的bash参考.

在下面的代码中

host_color=${uphost}_host_color
host_color=${!host_color}
Run Code Online (Sandbox Code Playgroud)

第二行在做什么?在这种情况下,!运营商做了什么?

And*_*ahl 7

这是间接引用的简短形式.

$ foo=bar
$ bar=bas
$ echo ${!foo}
bas
Run Code Online (Sandbox Code Playgroud)

看似相似的构造$ {!foo*}扩展为名称以foo开头的所有变量的名称:

$ foo1=x
$ foo2=y
$ echo ${!foo*}
foo1 foo2
Run Code Online (Sandbox Code Playgroud)