2010-03-19 2 views
27

У меня есть смешной вопрос из-за смешной проблемы.UNIX, получить переменную окружения

Обычно, если я хочу, чтобы получить содержимое переменного окружения в UNIX оболочке, я могу сделать

echo ${VAR} 

Давайте предположим, из-за мою нелепую ситуацию, что это невозможно.

Как получить содержимое переменной среды в stdout, без того, кто смотрит на саму команду (а не на выход), см. Значение переменной окружения.

Я могу представить, что решение является чем-то вроде echo env(NAME_OF_VAR), хотя я не могу найти его. Решение должно работать в sh.

PS Я не могу написать сценарий для этого, он должен быть построен в команде Unix (я знаю, смешно проблема)

спасибо (и извините за абсурдности)

+11

Майк, ты в порядке? Вас держат с ружьем в голову мафией на каком-то складе? Это просьба о помощи? –

+0

В чем проблема? Клавиатура, где '{' невидима/недоступна? –

+1

@ Тим .. моя ситуация была почти такой плохой. Но теперь, я в порядке – Mike

ответ

39

printenv VARIABLE_NAME

+0

Ooh, что-то из/usr/ucb. Впечатляет. – pra

2

Как об этом:

myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$'); 
+0

на самом деле вам, вероятно, лучше использовать разрез в конце, например. ... | cut -d '=' -f2- –

4

ли вы имеете в виду что-то вроде этого:

ENV() { 
    printf 'echo $%s\n' $1 | sh 
} 

Это ТРУДЫ n обычная старая раковина Борна.

+0

Я бы использовал больше цитирования себя: 'ENV() {printf 'printf" %% s \\ n "" $ {% s} "\ n'" $ 1 "| ш; } ' –

1

Решение действительно зависит от того, что ограничения, почему вы не можете использовать простой $VAR. Может быть, вы могли бы вызвать оболочку, которая не имеет ограничений, и пусть это суб-оболочки оценить переменную:

bash -c 'echo $VAR' 
4

введите следующую команду в терминале, он будет отображать весь перечень переменных окружения

printenv

распечатать разыскиваемого переменную так:

эхо $ VARIABLENAME

0
(set -o posix ; set) | grep $var 
+0

В StackOverflow отказываются отвечать только на код. Пожалуйста, попробуйте немного уточнить, почему это правильный ответ. – Mittal

+0

Не забывайте добавлять объяснения в ответ, который вы публикуете, чтобы пользователи могли понять его использование. @ user3061097 – LuFFy

Смежные вопросы