it-swarm.com.de

So generieren Sie dynamisch einen Umgebungsvariablennamen und exportieren ihn

Ich möchte den Namen der Umgebungsvariablen dynamisch generieren und den Wert auf diese Variable setzen. Ich habe ein Shell-Skript wie folgt geschrieben.

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

Im obigen Code sollte der generierte Zeitstempel der Schlüssel sein und "Testwert" der Wert für diesen Schlüssel. Dieser Schlüssel und dieser Wert müssen in die Sitzung exportiert werden.

Wie kann ich dies mit Shell-Skript erreichen?

5
Santosh Hegde

Sie können printf -v verwenden, um Variablen dynamisch zu erstellen. Beispiel:

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

Dies gibt "Test value" aus.

Beachten Sie, dass temp="$(date +%s)" nicht funktioniert, da die Ausgabe von $(date +%s) numerisch ist und Variablennamen in Bash nicht mit einer Zahl beginnen können. Sie müssten ihm ein nicht numerisches Präfix geben, zum Beispiel:

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

Um die Variable zu exportieren, können Sie einfach Folgendes tun:

export $temp

Hier ist ein vollständiges Beispiel mit dem Beweis, dass die Variable wirklich in die Umgebung exportiert wird:

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

Ausgänge zum Beispiel:

t1486060416
Test value
4
janos