2010-03-19 4 views
27

Ich habe eine lächerliche Frage wegen eines lächerlichen Problems.UNIX, bekomme Umgebungsvariable

Normalerweise, wenn ich den Inhalt einer Umgebungsvariablen in UNIX-Shell erhalten möchten, kann ich

echo ${VAR} 

Nehmen wir an, aufgrund meiner lächerlichen Situation, dass dies nicht möglich ist.

Wie bekomme ich den Inhalt einer Umgebungsvariablen auf stdout, ohne dass jemand, der den Befehl selbst (nicht die Ausgabe) betrachtet, den Wert der Umgebungsvariablen sieht.

Ich kann die Lösung als etwas wie echo env(NAME_OF_VAR) vorstellen, obwohl ich nicht scheinen kann, es zu finden. Die Lösung muss in sh funktionieren.

PS Ich kann nicht ein Skript für dieses schreiben, muss ein in Unix-Befehl aufgebaut sein (ich weiß, lächerliche Problem)

Dank (und sorry für die Absurdität)

+11

Mike, bist du ok? Werden Sie von einer Mafia in einem Lagerhaus mit einer Waffe an Ihren Kopf gehalten? Ist das ein Hilferuf? –

+0

Was ist das Problem? Eine Tastatur, auf der '{' unsichtbar/unzugänglich ist? –

+1

@Tim .. meine Situation war fast so schlimm. Aber jetzt bin ich OK – Mike

Antwort

39

printenv VARIABLE_NAME

+0

Ooh, etwas aus/usr/ucb. Beeindruckend. – pra

2

Wie wäre es damit:

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

tatsächlich sind Sie wahrscheinlich besser dran mit Schnitt am Ende, z. ... | cut -d '=' -f2- –

4

Sie so etwas wie das bedeutet Sie:

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

Dies funktioniert i n einfache alte Bourne-Muschel.

+0

Ich würde mehr Zitate selbst verwenden: 'ENV() {printf 'printf" %% s \\ n "" $ {% s} "\ n'" $ 1 "| Sch; } ' –

1

Die Lösung hängt wirklich davon ab, was die Beschränkungen sind, warum Sie nicht ein einfaches $VAR verwenden können. Vielleicht könnten Sie eine Shell aufrufen, die diese Unterschale die Variable wertet nicht die Einschränkungen und lassen:

bash -c 'echo $VAR' 
4

den folgenden Befehl ein im Terminal, wird es die ganze Liste der Umgebungsvariablen anzuzeigen

printenv

drucken nun die gewünschte Variable wie folgt aus:

echo $ VARIABLEN

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

Code only-Antworten werden in StackOverflow nicht empfohlen. Bitte versuchen Sie etwas genauer zu erläutern, warum dies eine korrekte Antwort ist. – Mittal

+0

Denken Sie immer daran, der Antwort, die Sie posten, eine Erklärung hinzuzufügen, damit die Benutzer die Verwendung der Antwort nachvollziehen können. @ Benutzer3061097 – LuFFy