Ответ 1
printenv VARIABLE_NAME
У меня есть смешной вопрос из-за смешной проблемы.
Обычно, если я хочу получить содержимое переменной среды в оболочке UNIX, я могу сделать
echo ${VAR}
Предположим, из-за моей нелепой ситуации, что это невозможно.
Как получить содержимое переменной среды в stdout, без того, кто смотрит на саму команду (а не на выход), см. значение переменной среды.
Я могу представить, что решение является чем-то вроде echo env(NAME_OF_VAR)
, хотя я не могу найти его. Решение должно работать в sh.
PS Я не могу написать script для этого, это должна быть встроенная команда unix (я знаю, смешная проблема)
Спасибо (и жаль абсурда)
printenv VARIABLE_NAME
Вы имеете в виду что-то вроде этого:
ENV() {
printf 'echo $%s\n' $1 | sh
}
Это работает в простой старой оболочке Борна.
введите следующую команду в терминал, он отобразит весь список переменных среды
printenv
теперь напечатайте требуемую переменную следующим образом:
echo $VARIABLENAME
Как насчет этого:
myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$');
Решение действительно зависит от того, каковы ограничения, почему вы не можете использовать простой $VAR
. Возможно, вы могли бы вызвать оболочку, которая не имеет ограничений, и пусть эта под-оболочка оценивает переменную:
bash -c 'echo $VAR'