属性
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)