2010-03-19 12 views
27

Ho una domanda ridicola a causa di un problema ridicolo.UNIX, ottenere la variabile di ambiente

Normalmente, se voglio ottenere il contenuto di una variabile di ambiente in shell UNIX, posso fare

echo ${VAR} 

Supponiamo, a causa della mia situazione ridicola, che questo non è possibile.

Come si ottiene il contenuto di una variabile di ambiente su stdout, senza che qualcuno stia guardando il comando stesso (non l'output), vedere il valore della variabile di ambiente.

Posso immaginare la soluzione essere qualcosa come echo env(NAME_OF_VAR) anche se non riesco a trovarlo. La soluzione deve funzionare in sh.

PS Non riesco a scrivere uno script per questo, deve essere costruito in comando UNIX (lo so, problema ridicolo)

Grazie (e scusate per l'assurdità)

+11

Mike, stai bene? Ti stanno tenendo con una pistola alla testa dalla mafia in qualche magazzino? È una richiesta di aiuto? –

+0

Qual è il problema? Una tastiera dove '{' è invisibile/inaccessibile? –

+1

@ Tim .. la mia situazione era quasi così male. Ma ora, sto bene – Mike

risposta

39

printenv VARIABLE_NAME

+0

Ooh, qualcosa di/usr/ucb. Impressionante. – pra

2

Che ne dite di questo:

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

in realtà probabilmente stai meglio usando il taglio alla fine, ad es. ... | cut -d '=' -f2- –

4

Vuoi dire qualcosa di simile:

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

questo funziona i n semplice guscio Bourne vecchio.

+0

Vorrei usare più citazioni: 'ENV() {printf 'printf" %% s \\ n "" $ {% s} "\ n'" $ 1 "| sh; } ' –

1

La soluzione in realtà dipende da ciò che le restrizioni sono il motivo per cui non è possibile utilizzare un semplice $VAR. Forse si potrebbe chiamare un guscio che non ha le restrizioni e lasciare che questo sub-shell valutare la variabile:

bash -c 'echo $VAR' 
4

tipo il seguente comando nel terminale, verrà visualizzato tutto l'elenco delle variabili di ambiente

printenv

ora stampare la variabile voluto in questo modo:

echo $ NOMEVARIABILE

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

Le uniche risposte del codice sono sconsigliate su StackOverflow. Si prega di provare ad elaborare un po 'sul motivo per cui questa è una risposta corretta – Mittal

+0

Ricordarsi sempre di aggiungere una spiegazione alla risposta posta, in modo che gli utenti possano comprenderne l'uso. @ user3061097 – LuFFy

Problemi correlati