Dies ist mit der Befehlsersetzung möglich .
DATEVAR=$(date +%s)
Ich arbeite an einem Bash-Skript, das eine Konfigurationsdatei sichert, bevor eine neue Datei kopiert wird.
So sieht mein Ausschnitt aus:
mv ~/myStuff.conf ~/myStuff.conf.bak cp ~/new/myStuff.conf ~/myStuff.conf
Bei jeder Ausführung dieses Skripts möchte ich, dass das Backup einen Unix-Zeitstempel im Dateinamen hat. Ich habe es versucht
DATEVAR=date +%s mv ~/myStuff.conf ~/myStuff.conf.$DATEVAR.bak
Dies funktioniert jedoch nicht, da die Date-Funktion nicht ausgeführt wird und Bash dies als String sieht und die resultierende Datei dann endet
myStuff.conf.date+%s.bak
Ideen, wie die Ergebnisse der Datumsfunktion in eine Variable umgewandelt werden können?
--[[z4us|binz--]] export datevar=`date` # date embedded in backquotes --[[z4us|binz--]] echo $datevar Lun 25 Gen 2016 15:56:14 CET
Dies antwortet nicht auf die Variable, die die Ausgabe eines Befehls enthält. Das ist schon beantwortet. Wie für den Rest Ihres Beispielskripts;
Eine etwas kürzere Version:
mv ~/myStuff.conf ~/myStuff.conf.$(date +%s)
Sie müssen keine Variable für etwas festlegen, das Sie nur einmal benötigen oder verwenden. Um mit mehr Shells kompatibel zu sein, können Sie auch folgende Syntax verwenden:
mv ~/myStuff.conf ~/myStuff.conf.`date +%s`
Es scheint mir nur so, dass die Verwendung des Datumsstempels als Erweiterung die zusätzliche .bak-Datei im Dateinamen überflüssig macht.