在 bash 中,如何回显变量名称而不是变量值?

在 bash 中,如何回显变量名称而不是变量值?

假设我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

相关内容