web-dev-qa-db-fra.com

UNIX, get variable d'environnement

J'ai une question ridicule à cause d'un problème ridicule. 

Normalement, si je veux obtenir le contenu d’une variable d’environnement dans UNIX Shell, je peux le faire.

echo ${VAR}

Supposons, à cause de ma situation ridicule, que ce n'est pas possible. 

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

Je peux imaginer que la solution est quelque chose comme echo env(NAME_OF_VAR) même si je n'arrive pas à la trouver. La solution doit fonctionner dans sh.

PS Je ne peux pas écrire de script pour ça, ça doit être une commande unix intégrée (je sais, problème ridicule)

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

33
Mike

Tu peux faire:

printenv VARIABLE_NAME

49
Sergei Kurenkov

tapez la commande suivante dans terminal, elle affichera toute la liste des variables d'environnement

printenv

affiche maintenant la variable recherchée comme ceci:

echo $ VARIABLENAME

5
ASR

Voulez-vous dire quelque chose comme ça:

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

Cela fonctionne dans la vieille plaine Bourne Shell.

4
mouviciel

Que dis-tu de ça:

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

Utiliser ${!VAR_NAME} devrait être ce que vous cherchez

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

La solution dépend vraiment des restrictions pour lesquelles vous ne pouvez pas utiliser un simple $VAR. Peut-être pourriez-vous appeler un shell qui n'a pas les restrictions et laisser ce sous-shell évaluer la variable:

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

recherche de toutes les variables de format compatibles avec Unix utilisées

0
user3061097