echo $HOSTNAME 结果成为变量的键

echo $HOSTNAME 结果成为变量的键

有人能帮我写一个 bash 脚本吗?我似乎无法理解它。

财产

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


echo $server1
abc,def,ghc

echo $HOSTNAME
server1

通过以上信息,我想在测试变量中输出输出“abc,def,ghc”。

echo \$$HOSTNAME
$server1

bash-4.1$ test=`echo \$$HOSTNAME`
bash-4.1$ echo $test
8722HOSTNAME

如果有人能帮我用 perl/bash 或任何我可以使用的代码完成这个任务,请帮忙。谢谢。

答案1

您正在寻找:

${!HOSTNAME}

例如

echo ${!HOSTNAME}

这通常称为嵌套变量。bash 手册页解释了此构造的工作原理:

       ${!prefix*}
              Names matching prefix. Expands to the names of variables whose
              names begin with prefix, separated by the first character of the
              IFS special variable.

但是,在这种特殊情况下要小心,因为$HOSTNAME通常包含计算机的主机名,即应该是一个完全合格的域名,这些包含点,这在 Bash 变量名中无效。

相关内容