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é)
Tu peux faire:
printenv VARIABLE_NAME
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
Voulez-vous dire quelque chose comme ça:
ENV() {
printf 'echo $%s\n' $1 | sh
}
Cela fonctionne dans la vieille plaine Bourne Shell.
Que dis-tu de ça:
myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$');
Utiliser ${!VAR_NAME}
devrait être ce que vous cherchez
> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
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'
( set -o posix ; set ) | grep $var
recherche de toutes les variables de format compatibles avec Unix utilisées