Wie vergleiche ich den Zeitstempel zweier Dateien?
Ich habe es versucht, aber es funktioniert nicht:
file1time=`stat -c %Y fil1.txt`
file2time=`stat -c %Y file2.txt`
if[$file1time -gt $file2time];
then
doSomething
fi
Ich habe beide Zeitstempel in der richtigen Reihenfolge gedruckt und es gibt mir
1273143480
1254144394
./script.sh: line 13: [1273143480: command not found
Also im Grunde, wenn der Vergleich nicht funktioniert, denke ich. Oder wenn es einen anderen netten Weg gibt als das, was ich tue, lass es mich wissen. Was muss ich ändern?
linux
bash
comparison
timestamp
newcoderintown
quelle
quelle
Antworten:
Die Operatoren zum Vergleichen von Zeitstempeln sind:
Die Mnemonik ist einfach: "neuer als" und "älter als".
quelle
Dies liegt an einigen fehlenden Leerzeichen.
[
ist ein Befehl, daher muss er mit Leerzeichen versehen sein und der]
ist ein spezieller Parameter, der angibt, wo seine Befehlszeile endet. Ihre Testzeile sollte also so aussehen:quelle
[
ist ein Testbefehl - siehe Abschnitt "CONDITIONAL EXPRESSIONS" auf derbash
Manpage. Es gibt auch eine eigenständige ausführbare Datei in/usr/bin/test
und/usr/bin/[
, aber wenn Sie Bash verwenden und nicht den vollständigen Pfad verwenden, verwenden Sie die integrierte Shell.if
ist keine Magie. Es wird versucht, den übergebenen Befehl auszuführen, und es wird geprüft, ob der Beendigungsstatus Null ist. Nicht existierende Argumente werden ebenfalls nicht gut verarbeitet, weshalb Sie die darin verwendeten Variablen in Anführungszeichen setzen sollten.quelle
quelle