Удостоверьтесь, что у Вас есть огнеупорный иск для контакта со всеми отсталыми рецензентами, которые дают плохие метки, не пробуя приложение или читая описание того, что это, как предполагается.
я был отмечен для того, чтобы не сделать вещи, что в моем описании говорится, что оно не делает.
процесс рассмотрения и неспособность действительно ответить, невыносимы.
Из страницы руководства bash :
${!varname}
Если первым символом параметра является восклицательный знак, уровень вводится косвенное обращение к переменной. Bash использует значение переменной, сформированное из оставшейся части параметра, в качестве имени переменной; затем эта переменная расширяется, и это значение используется в остальной части подстановка, а не значение самого параметра. Это известное как непрямое расширение.
$ {! Varname}
должен помочь
$ var="content"
$ myvar=var
$ echo ${!myvar}
content
Нет прямого синтаксиса, соответствующего Posix, только bash
ism. Обычно я делаю так:
eval t="\$$varname"
Это будет работать в любой оболочке Posix, включая те системы, где bash
- это оболочка входа в систему, а / bin / sh
- что-то меньшее и быстрое, например ] ясень
. Мне нравится bash, и я использую его для своей оболочки входа в систему, но я избегаю башизмов в командных файлах.
/ usr / bin / env
shebang , но учтите, что он все еще не на 100% переносим и имеет проблемы с безопасностью. Я обычно смотрю Advanced Bash-Scripting Guide , когда мне нужно освежить свои навыки Bash.
Что касается вашего вопроса, посмотрите Косвенные ссылки
] Обозначение:
Version < 2
\$$var
Version >= 2
${!varname}