2010-03-19 6 views
27

J'ai une question ridicule en raison d'un problème ridicule.UNIX, obtiennent variable d'environnement

Normalement, si je veux obtenir le contenu d'une variable d'environnement shell UNIX, je peux le faire

echo ${VAR} 

Supposons, en raison de ma situation ridicule, que cela est impossible.

Comment puis-je obtenir le contenu d'une variable d'environnement à stdout, sans quelqu'un qui regarde la commande elle-même (pas la sortie), voir la valeur de la variable d'environnement.

Je peux imaginer la solution étant quelque chose comme echo env(NAME_OF_VAR) bien que je n'arrive pas à le trouver. La solution doit fonctionner dans sh.

PS Je ne peux pas écrire un script pour cela, il doit être construit dans la commande unix (je sais, problème ridicule)

Merci (et désolé pour l'absurdité)

+11

Mike, ça va? Est-ce que vous êtes tenu avec un pistolet à la tête par la mafia dans un entrepôt? Est-ce un appel à l'aide? –

+0

Quel est le problème? Un clavier où '{' est invisible/inaccessible? –

+1

@Tim .. ma situation était presque aussi mauvaise. Mais maintenant, je vais bien – Mike

Répondre

39

printenv VARIABLE_NAME

+0

Ooh, quelque chose de/usr/ucb. Impressionnant. – pra

2

Que diriez-vous ceci:

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

en fait, vous êtes probablement mieux d'utiliser la coupe à la fin, par exemple. ... | cut -d '=' -f2- –

4

Voulez-vous dire quelque chose comme ceci:

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

cela fonctionne i n plaine vieille coquille de Bourne.

+0

J'utiliserais plus de guillemets moi-même: 'ENV() {printf 'printf" %% s \\ n "" $ {% s} "\ n'" $ 1 "| sh; } ' –

1

La solution dépend vraiment de ce que les restrictions sont la raison pour laquelle vous ne pouvez pas utiliser un $VAR simple. Peut-être que l'on pourrait appeler une coquille qui ne possède pas les restrictions et laisser ce sous-shell évaluer la variable:

bash -c 'echo $VAR' 
4
Type

la commande suivante dans le terminal, il affichera toute la liste des variables d'environnement

printenv

maintenant imprimer la variable désirée comme ceci:

echo $ NOMVARIABLE

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

Les réponses au code uniquement sont déconseillées sur StackOverflow. S'il vous plaît essayer d'élaborer un peu pour savoir pourquoi c'est une bonne réponse – Mittal

+0

Rappelez-vous toujours d'ajouter une explication à la réponse que vous postez, de sorte que les utilisateurs peuvent comprendre l'utilisation de celui-ci. @ user3061097 – LuFFy

Questions connexes