web-dev-qa-db-fra.com

Comment générer dynamiquement un nom de variable d'environnement et l'exporter

Je souhaite générer le nom de la variable d’environnement de manière dynamique et définir la valeur sur cette variable. J'ai écrit un script Shell comme ci-dessous.

temp="$(date +%s)"
echo $temp
export ${temp} = "Test value"
echo "Pass variable ${temp}"

Dans le code ci-dessus, l'horodatage généré doit être la clé et "Valeur de test" est la valeur de cette clé. Cette clé et cette valeur doivent être exportées vers la session.

Comment puis-je réaliser cela en utilisant un script Shell?

5
Santosh Hegde

Vous pouvez utiliser printf -v pour créer des variables de manière dynamique, par exemple:

temp=somename
echo $temp
printf -v $temp "Test value"
echo $somename

Ceci produira une "valeur de test".

Notez que temp="$(date +%s)" ne fonctionnera pas, car la sortie de $(date +%s) est numérique et les noms de variables dans Bash ne peuvent pas commencer par un nombre. Vous devez lui donner un préfixe non numérique, par exemple:

temp="t$(date +%s)"

Pour exporter la variable, vous pouvez simplement faire:

export $temp

Voici un exemple complet, avec la preuve que la variable est réellement exportée dans l'environnement:

temp=t$(date +%s)
echo $temp
printf -v $temp "Test value"
export $temp
sh -c "echo \$$temp"

Sorties par exemple:

t1486060416
Test value
4
janos