it-swarm.com.de

UNIX, Umgebungsvariable abrufen

Ich habe eine lächerliche Frage wegen eines lächerlichen Problems. 

Normalerweise, wenn ich den Inhalt einer Umgebungsvariablen in der UNIX-Shell abrufen möchte, kann ich dies tun

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 sich den Befehl selbst ansieht (nicht die Ausgabe), den Wert der Umgebungsvariablen anzeigt?.

Ich kann mir vorstellen, dass die Lösung so etwas wie echo env(NAME_OF_VAR) ist, obwohl ich sie scheinbar nicht finden kann. Die Lösung muss in sh arbeiten.

PS Ich kann kein Skript dafür schreiben, es muss ein integrierter Unix-Befehl sein (ich weiß, lächerliches Problem)

Danke (und Entschuldigung für die Absurdität)

33
Mike

Du kannst tun:

printenv VARIABLE_NAME

49
Sergei Kurenkov

geben Sie den folgenden Befehl in terminal ein, um alle Umgebungsvariablen anzuzeigen

printenv

jetzt drucken Sie die gewünschte Variable wie folgt:

echo $ VARIABLENAME

5
ASR

Meinst du so etwas:

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

Dies funktioniert in einfachen alten Bourne Shell.

4
mouviciel

Wie wäre es damit:

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

${!VAR_NAME} sollte das sein, wonach Sie suchen

> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
1
Ryan Anguiano

Die Lösung hängt wirklich von den Einschränkungen ab, weshalb Sie keinen einfachen $VAR verwenden können. Vielleicht könnten Sie eine Shell aufrufen, die keine Einschränkungen hat, und diese Sub-Shell die Variable auswerten lassen:

bash -c 'echo $VAR'
1
sth
( set -o posix ; set ) | grep $var

suche nach allen unix-kompatiblen Formatvariablen

0
user3061097