BASH - Einfaches Skript mit rm-Befehl funktioniert nicht

BASH - Einfaches Skript mit rm-Befehl funktioniert nicht

Ich habe dieses einfache Skript erstellt:

#/bin/bash
DATE=$(date +"%d_%m_%Y-%H:%M:%S")
tar -czvf /kopie/bin-$DATE.tar /bin
DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")
rm -f /kopie/bin-$DATE*.tar

Ich habe ein Problem mit der letzten Zeile des Skripts. Der Befehl rm funktioniert nicht, er löscht die Datei nicht. Das Datum „vor 2 Stunden“ funktioniert einwandfrei, es liegt also kein Problem damit vor.

Antwort1

Sie scheinen den Dateinamen auf zwei verschiedene Arten anzugeben:

DATE=$(date --date="2 hours ago" +"%d-%m-%Y_%H")

Oben steht zB zwischen Jahr und Stunde ein _.

Das von Ihnen generierte Datum hatte jedoch ein anderes Format:

DATE=$(date +"%d_%m_%Y-%H:%M:%S")

Dies würde jedoch immer noch nicht das inhärente Problem lösen, "ein Date" zu bekommenmehr oder wenigervor zwei Stunden“, weil die Zeitspanne von 13:00:00 bis 12:59:59 nur eine Sekunde beträgt und dies ohnehin nicht mit dem Muster „2017-11-20_13*“ übereinstimmt.

Ich würde Folgendes in Betracht ziehen find:

 find . -name "*.tar"  -maxdepth 0 -cmin +120 -delete

sollte alle *.tar-Dateien im aktuellen Verzeichnis löschen, die älter als zwei Stunden sind (verwenden Sie +119, um eine Karenzzeit von einer Minute zu erhalten). Sie können es auch weglassen, -deletewenn Sie testen, ob dieser Ansatz funktioniert.

Antwort2

Ich glaube, das Problem liegt an der Erweiterung der $DATEVariablen in der letzten Zeile. Um dies zu testen, können Sie einfach echovor dem rmBefehl ein hinzufügen und das Skript ausführen, oder Sie können versuchen, das Problem zu vermeiden, indem Sie im Befehl ${DATE}anstelle von verwenden .$DATErm

Das Problem könnte auch darin bestehen, dass Sie versuchen, einen Dateinamen zu löschen, der nicht existiert, da Sie anscheinend zwei unterschiedliche Datumsausgabeformate angegeben haben und ich davon ausgehe, dass die Datumsformate zwischen der Erstellung der TAR-Datei und der Löschung zwei Stunden später übereinstimmen sollten.

verwandte Informationen