Как в 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

с пустой строкой междуПриветиПока, вместовар. Что я делаю не так?

я бегуБаш 4.1.5(1)наУбунту 10.04.4.

решение1

Theрасширение параметра оболочки ${!имя@}или${!имя*}может сделать трюк,

$ foo=bar
$ var_name=(${!foo@})
$ echo $var_name" = "$foo
foo = bar

Хотя это и осуществимо, я не могу себе представить полезность этого...

решение2

Если вы хотите просто вывести имя статической переменной, вы можете экранировать знак $-:

echo \$var

Связанный контент