Re: Script geht nicht
Am 2012-08-06, David Raab <debian@david-raab.de> schrieb:
> "fuser" führt in deinem Beispiel lediglich "mv" aus oder nicht.
> Wenn nachfolgende Anweiseungen dort stehen würden, würden diese
> einfach durchlaufen.
Nein, schau Dir nochmals den Code an. Ich habe ihn nur noch
sinngemaesz vor Augen, der war etwa so:
for DATEI in $DATEIEN; do
mv $DATEI $ZIEL
done
Und ich empfahl sinngemaesz zwei Verbesserungen:
for DATEI in $DATEIEN; do
fuser "$DATEI" > /dev/null 2>&1 || mv "$DATEI" $ZIEL
done
Nicht mehr; nicht weniger.
Von Zugriffen auf die Quelle war keine Rede. Ich rede davon, dasz
ich erst die Endgueltigkeit der Quelle pruefe, bevor ich sie ins
Ziel verschiebe (oder auch kopiere).
> Wenn du mir jetzt sagst. "Da kommt aber nichts danach". Korrekt.
In dem Skript kam nichts danach; sonst gehoert das natuerlich in ein
entsprechendes Konstrukt. Das ist doch weder schwierig noch
aufwaendig.
>> Und da ich nicht weisz, wie die naechsten Prozesse mit
>> Halbgegorenem verfahren, ist. Der fuser-Aufruf erledigt das mit
>> einem Einzeiler.
> In deinem beispiel aber nicht, da du nirgendswo abbrichst.
Es ging um die Prozesse, die die Weiterverarbeitung _im_ _Ziel_
vornehmen, nicht in der Quelle. Denen sollte nichts Unfertiges
vorgeworfen werden.
> Naja, ein Einzeiler der nicht das tut was du glaubst war nicht
> aufwendig.
Er tut es.
Sonst haette ich ja zu folgendem angeregt:
for DATEI in $DATEIEN; do
if ! fuser "$DATEI" > /dev/null 2>&1; then
mv "$DATEI" $ZIEL
$BEFEHL_1 $PARAMETER_1
$BEFEHL_2 $PARAMETER_2
...
$BEFEHL_N $PARAMETER_N
fi
done
Nun ist auf Grund des "if..fi" eben ein Zweizeiler dazugekommen.
> Man sollte noch dazu schreiben warum man etwas tut.
Ich regte hilfreich an; ich machte nicht die Hausaufgaben anderer.
Grusz,
Peter Blancke
--
Hoc est enim verbum meum!
Reply to: