Bash: Datumsvergleich

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn die beiden Variablen numerisch sind, dann versuche es mit [ $TAGUEVERGABE -gt $TAG ] im Test. Damit das Datum numerisch wird, benutze an einfachsten den Unix-Zeitstempel, also

if [ $(stat -c %Y $DATEI1) -gt $(stat -c %Y $DATEI2) ] ; then echo "Test" ; fi

Ich danke dir. Es hat funktioniert.

0

Anscheinend sollte ein Leerzeichen sowohl nach der öffnenden als auch vor der schliessenden eckigen Klammer stehen.Vielleicht funktioniert es.

Vielen Dank für die Antwort. Das war leider nicht das Problem :(

0

bash Script: Leerzeichen- und Variablen-Auswertungsproblem?

Hallo!

( tl;dr ? überflieg das Fettgedruckte und das CodeBeispiel =) )

Das Problem ist etwas komplexer, ich konnte es aber auf das folgende, einfache Problem begrenzen:

  • Prüfe ob das Verzeichnis /backups/01 today/ existiert.
  • falls Ja: Wechsle in das Verzeichnis und dann führe den Befehl macheX aus
  • ansonsten: gib eine Fehlermeldung aus

Kern des Problems: Das Verzeichnis enthält enthält ein Leerzeichen und der Pfad muss vor dem Prozess in der Variablen DIRR gepeichert werden. (Der Pfad kann nicht umbenannt werden, das wäre zu einfach)

Ich habe in etwa folgendes:

#!/bin/bash

DIRR="/backups/01 today"

if [ -d $DIRR ];
then
  cd $DIRR
  macheX
else
   echo "FEHLER: $DIRR existiert nicht!"
fi

Wie man sieht wird die Variable DIRR anfangs gesetzt und wird anschließend auf drei unterschiedliche arten ausgewertet. Ich habe im Code-Beispiel bewusst auf ` ' und " Einfassungen von DIRR verzichtet, denn genau das ist das Problem! Wie müssen diese DIRR eingefasst werden und wie der Pfad angegeben werden, damit es funktioniert?

Ich habe etliche Kombinationen durch und werde langsam verrückt. =) Wenn ich den Pfad z.B. mit oder ohne escape-Zeichen vor dem Leerzeichen angebe, dann klappt das eine aber es hakt dann wieder wo anders. In der Fehlermeldung darf das Verzeichnis beliebig erscheinen (mit ` ' " oder auch dem escape-Zeichen \ )

Wer schafft es mein Brett vorm Kopf zu zersägen? =)

...zur Frage

Gibt es die Möglichkeit in ein Bash Skript einen Zufallsgenerator einzubauen, der aus festgelegten Variablen eine Zufällige ausgibt?

Und zwar sitze ich momentan an einem Skript, das mir und meinen Kollegen sagen soll, wo wir in der Mittagspause essen gehen sollen. Mein Problem ist jetzt das ich nicht weiß wie ich aus den 4 Variablen = Ikea, Döner, Chinetzen (also Asiamann) oder Bäcker eine zufällige ausgeben lassen kann. Desweiteren hab ich einen Arbeitskollegen der kein Ikea mag und einen der keinen Döner mag. Aber das lässt sich doch problemlos über if und then lösen denke ich? Ich muss zugeben das ich da noch recht neu bin, Ausbildung und so.. :) Danke

...zur Frage

Ordner verschieben die älter als X-Tage sind per Batch?

Hallo Zusammen ich wollte euch fragen wie ich Ordner (plus Unterordner und Dateien) verschieben kann wenn diese Ordner (Achtung Ordner nicht Dateien) älter sind als X-Tage.

Bisher habe ich folgendes Skript:

Robocopy.exe C:\Users\Benutzer\Desktop\Temp C:\Temp\TEST /minage:42 /E /R:1 /W:1

Anscheinend überprüft Robocopy aber nur das Änderungsdatum von Dateien und nicht von Ordnern und so funktioniert das mit "minage:42" nicht :(

Mit Dateien funktioniert das Skript problemlos nur bei Ordnern nicht.

Ich hoffe einer von euch kann mir hier weiterhelfen, vielleicht hatte ja schon mal jemand das Problem :o

Danke schonmal.

Grüße

...zur Frage

Bash: Ausgabe von find mit echo. Wie funktioniert Zeilenumbruch nach jeder Datei?

Ich möchte in meinem Bash-Skript mit find nach Dateien suchen und diese mit echo ausgeben. Folgende Zeile funktioniert:

echo find $1 -size +$2c

Dabei steht im ersten Parameter der Verzeichnisname, im zweiten die Größe der Dateien.

Jetzt hängt echo die Dateinamen in einer Zeile aneinander. Kann ich irgendwie einen Zeilenumbruch nach jedem Dateinamen einbauen?

...zur Frage

Was möchtest Du wissen?