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?
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