UNIX, récupère la 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 un shell UNIX, je peux le faire.

echo ${VAR} 

Supposons, en raison de ma situation ridicule, que ce n’est pas possible.

Comment puis-je obtenir le contenu d’une variable d’environnement sur 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 que la solution est quelque chose comme echo env(NAME_OF_VAR) bien que je n’arrive pas à le trouver. La solution doit fonctionner en sh.

PS Je ne peux pas écrire un script pour cela, ce doit être une commande Unix intégrée (je sais, problème ridicule)

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

printenv VARIABLE_NAME

Voulez-vous dire quelque chose comme ça:

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

Cela fonctionne dans le vieux shell Bourne ordinaire.

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

printenv

Maintenant, imprimez la variable souhaitée comme ceci:

echo $ VARIABLENAME

Que dis-tu de ça:

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

La solution dépend vraiment des ressortingctions pour lesquelles vous ne pouvez pas utiliser un simple $VAR . Vous pourriez peut-être appeler un shell qui ne possède pas les ressortingctions et laisser ce sous-shell évaluer la variable:

 bash -c 'echo $VAR' 

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

 > FOO=BAR123 > VAR_NAME=FOO > echo ${VAR_NAME} FOO > echo ${!VAR_NAME} BAR123 
 ( set -o posix ; set ) | grep $var 

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