Frage zur Syntax der BASH

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Helios
Beiträge: 2
Registriert: 25.01.2005 08:42:39

Frage zur Syntax der BASH

Beitrag von Helios » 25.01.2005 09:03:19

Hallo,

erst einmal freue ich mich, nun dieser Community anzugehören. :)

Nun zu meiner Frage:
Ich erstelle mittels Cron jede Woche ein automatisches Backup. Dieses Backup wird in ein extra Verzeichnis geschoben. Bei jedem Backup wird eine neue Datei angelegt.
Nunmöchte ich ein Skript schreiben, welches in dem besagten Verzeichnis prüft, ob mehr als 3 Dateien vorhanden sind. Wenn ja, dann soll das Programm alle Daten die älter als 3 Wochen sind löschen. Aber ich bekomme das Programm nicht richtig hin.

cd /Verzeichnis...
vers=find -type f | wc -l; #An der Stelle wird geprüft, wie viele Einträge das Verzeichnis hat
if test $vers -gt 3; then # Prüfung, ob größer 3
find -mtime +21 -exec rm{} \; #wenn ja, dann lösche die Daten, die älter als 3 Wochen sind
fi

Ich denke, dass die Variablenzuweisung nicht funktioniert., bzw, dass ich die Syntax vermasselt habe.
Bei der if-Anweisung bekomme ich immer die Fehlermeldung, dass für -gt ein monärer operatort erwartet wird.

Kann mir da bitte jemand helfen?

Gruss Helios

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 25.01.2005 09:11:50

Willkommen im Forum!


wenn du das Ergebnis eines Kommandos einer Variablen zuweisen möchtest, solltest du eine der folgenden Varianten verwenden:

Code: Alles auswählen

vers=$(find -type f | wc -l)
vers=`find -type f | wc -l`

Helios
Beiträge: 2
Registriert: 25.01.2005 08:42:39

Beitrag von Helios » 25.01.2005 10:37:07

Super, es klappt.

Vielen Dank für die superschnelle Antwort.

Gruss Helios

Antworten