Bash: Datumsvergleich
Ich habe noch eine Frage zur Bash-Skript-Programmierung. Ich habe zwei Dateien, die eine hat mein Skript ermittelt, die andere wurde übergeben. Nun habe ich von beiden Dateien das letzte Änderungsdatum in Variablen gespeichert. Diese Daten möchte ich nun vergleichen, aber mein Ansatz unten funktioniert nicht.
if [[ "$TAGUEBERGABE > $TAG" ]]
then
echo "$NAME"
fi
Oder gibt es vielleicht sogar eine einfachere Möglichkeit herausfinden, welche Datei älter oder jünger ist?
3 Antworten

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


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 :(

Du kannst die Zeitstempel der beiden Dateien auch direkt vergleichen:
> #!/bin/bash
>
> file1=datei1.csv
> file2=datei2.csv
>
> if [ $file1 -nt $file2 ]; then # NewerThan
> echo "$file1 ist neuer als $file2"
> fi
>
Weitere Tests stehen unter "man test" bzw. "man [".
