echo $HOSTNAME 结果成为变量的关键

Dia*_* Sy 1 shell bash

属性
server1=abc,def,ghc
server2=xyz,tes,iuy

#!/bin/sh

echo $server1
abc,def,ghc

echo $HOSTNAME
server1
Run Code Online (Sandbox Code Playgroud)

有了上面的这些信息,我想在测试变量中输出输出“abc,def,ghc”。

echo \$$HOSTNAME
$server1

bash-4.1$ test=`echo \$$HOSTNAME`
bash-4.1$ echo $test
8722HOSTNAME
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 perl/bash 中完成这项工作?

小智 5

man 1 bash 说:

如果参数的第一个字符是感叹号 (!),则它引入了一个变量间接级别。Bash 使用由参数的其余部分形成的变量的值作为变量的名称;这个变量然后被扩展,并且该值用于替换的其余部分,而不是参数本身的值。这称为间接扩展。

$ server1=abc,def,ghc
$ HOSTNAME=server1
$ echo ${!HOSTNAME}
abc,def,ghc
Run Code Online (Sandbox Code Playgroud)