Предположим, что у меня есть переменная 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