PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateilesen & weiterverarbeiten



caller1982
20.05.2005, 19:51
Hallo, ich hab bei folgendem Skript


#!/bin/sh
echo "Alte temporaere PS-Files loeschen..."
echo "Loeschen der Alten Versionsliste & neu erstellen"
echo '' > lyxliste.size
while read line
do
echo $line
ls -la $line >> lyxliste.size
done < lyxliste


folgende Ausgabe:
....
/home/caller/Documents/Darmstadt/Modellierung/FS-Modellierung-SS05.lyx
: Datei oder Verzeichnis nicht gefundendellierung/FS-Modellierung-SS05.lyx
....
Ich habe keine Ahnung warum das ls-la nicht geht, direkt in der Kommandozeile geht der Befehl

DANKE FÜR TIPPS

Marco

skynnyr
20.05.2005, 20:27
Bei mir läuft dein Script ohne Fehlermeldungen, sobald ich in lyxliste eine existierende Datei angebe. Ist die Fehlermeldung tatsächlich so verstümmelt (beginnend mit : und nur der halbe Dateiname)?

caller1982
20.05.2005, 20:33
Hast du (oder wer anderes) eine idee, woran das liegen könnte, bzw. wie mann es besser macht?

skynnyr
20.05.2005, 20:46
Keine Ahnung was da schief läuft. Wie gesagt, bei mir tuts das Script ja. Die Frage wie man es besser macht, kann ich erst beantworten, wenn ich weiß welche Aufgabe mit diesem Script gelöst werden soll.

caller1982
20.05.2005, 21:25
Also:
Ich schreibe regelmäßig diverse LyX Dateien (ein WYSIWYM) Frontend für LaTeX.
Dieses Skript soll nun überprüfen, od die Dateien sich set dem letzten start verändert haben, und die geänderten neu compilieren und ins Netz uploaden
Das ganze skript soll in etwa so aussehen


#!/bin/sh
echo "Fuer jede Datei prufen ob sie noch aktuell ist. Wenn nicht neues PDF und HTML erstellen und uploaden"
while read line
do
echo Ueberpruefen von: $line .lyx
if (test (ls -la $line .lyx) -ne (less lyxliste.size | grep $line .lyx)); then
echo pdf und HTML neu erstellen
~/Documents/LyX/lyxport-0.3/lyxport $line
echo uploaden

sed -e "s/OOO/$line/g" ~/bin/upload.ftpCommands > "$line.tmp"
lftp "$line.tmp"
rm "$line.tmp"

else
echo ok
fi
done < lyxliste



echo "Loeschen der Alten Versionsliste & neu erstellen"
echo '' > lyxliste.size

while read line
do
echo $line .lyx
ls -la $line .lyx >> lyxliste.size
done < lyxliste


Wie könnte man soetwas alternativ umsetzen?

skynnyr
21.05.2005, 08:39
Zur Überprüfung der Integrität der lyx Dateien würde ich md5sum nutzen. In einem einmalig auszuführenden ersten Schritt muss für jede zu überwachende Datei eine Prüfsumme mit md5sum gebildet werden:

md5sum Dateiname > Dateiname.md5

Nachdem diese Vorarbeit geleistet wurde, kann jetzt ein Script alle *.md5 Dateien auf gültige Hashes überprüfen.

md5sum --check Dateiname.md5

Immer dann, wenn eine der zu überwachenden Dateien geändert wurde, steht nach Ausführung dieses Kommandos in $? (Exitstatus des letzten Vordergrund Kommandos) eine 1. Andernfalls eine 0.
Im Falle einer 1 in $? wird die so ermittelte Datei nach Gusto verarbeitet, und der neue Hash in die zugehörige .md5 Datei geschrieben.
Auf diese Weise entfällt die Notwendgkeit, die Liste der zu überwachenden Dateien zwei Mal abzuarbeiten. Auch auf die Datei lyxliste kann dann verzichtet werden.