2010-03-19 13 views
27

Tengo una pregunta ridícula debido a un problema ridículo.UNIX, get environment variable

Normalmente si quiero obtener el contenido de una variable de entorno en el shell de UNIX, no puedo hacer

echo ${VAR} 

Vamos a suponer que, debido a mi situación ridícula, que esto no es posible.

¿Cómo puedo obtener el contenido de una variable de entorno a la salida estándar, sin alguien que está buscando en el propio comando (no el de salida), ver el valor de la variable de entorno.

puedo imaginar la solución siendo algo así como echo env(NAME_OF_VAR) aunque me parece que no puede encontrarlo. La solución tiene que funcionar en sh.

PS no puedo escribir un guión para esto, debe ser construido en un comando de Unix (sé, el problema ridícula)

Gracias (y perdón por el absurdo)

+11

Mike, ¿estás bien? ¿Está siendo retenido con un arma en la cabeza por la mafia en algún almacén? ¿Es esto una súplica de ayuda? –

+0

¿Cuál es el problema? ¿Un teclado donde '{' es invisible/inaccesible? –

+1

@Tim ... mi situación era casi tan mala. Pero ahora, estoy bien – Mike

Respuesta

39

printenv VARIABLE_NAME

+0

Ooh, algo fuera de/usr/ucb. Impresionante. – pra

2

¿Qué tal esto:

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

En realidad, es mejor que uses el corte al final, p. ... | cut -d '=' -f2- –

4

¿Quieres decir algo como esto:

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

esta i obras n plain Bourne shell.

+0

Usaría más citas mías: 'ENV() {printf 'printf" %% s \\ n "" $ {% s} "\ n'" $ 1 "| sh; } ' –

1

La solución realmente depende de cuáles son las restricciones qué no se puede usar un simple $VAR. Tal vez se podría llamar una cáscara que no tiene las restricciones y dejar que este sub-shell evaluar la variable:

bash -c 'echo $VAR' 
4

tipo el siguiente comando en el terminal, se mostrará toda la lista de variables de entorno

printenv

ahora imprimir la variable deseada como esto:

echo $ NOMBREVARIABLE

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

Se desaconsejan las respuestas de solo código en StackOverflow. Por favor, trate de explicar un poco por qué esta es una respuesta correcta – Mittal

+0

Recuerde siempre agregar una explicación a la respuesta que publique, para que los usuarios puedan entender el uso de la misma. @ user3061097 – LuFFy

Cuestiones relacionadas