假设我var
在 bash 中有一个变量。我可以给它赋值。例如,我将其设为字符串:
var="Test"
我想要的是echo
的名称var
,而不是 所拥有的值var
。 (我可以用 来做后者echo $var
,但我实际上想做前者。)
SO对这个问题的回答说要使用echo ${!var}
,但是当我这样做时,我 echo 只返回一个空行。例如,这个 bash 脚本
#!/bin/bash
echo "Hi"
var="Test"
echo ${!var}
echo "Bye"
返回此输出:
Hi
Bye
之间只有一个空行你好和再见, 代替变量。我究竟做错了什么?
我在跑bash 4.1.5(1)在乌班图10.04.4。
答案1
这shell参数扩展 ${!name@}或者${!名称*}可以做到这一点,
$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar
虽然可行,但我无法想象这个的用处......
答案2
如果你想简单地输出静态变量名,你可以转义$
- 符号:
echo \$var