Linux 15.039 Themen, 107.134 Beiträge

Script-Routine: for-Schleife: wie denn oder wie sonst?

edico / 10 Antworten / Flachansicht Nickles

Hej folks,

Problembereich "Script-Routine": Eine gepackte Datei wird gesplittet und soll via Disketten verschoben werden. Der gepackte tar wird Disk-gemäss gesplittet nach file.tgz.001, file.tgz.002 ...

So läufts nach dem Packen und Splitten mit 2 Disks:
mount /floppy
mv *.001 /floppy
umount /floppy
echo Disk wechseln ... [Ret]
read
mount /floppy
mv *.002 /floppy
umount /floppy
echo Done ... [Ret]
read

Wie heisst die Schleife, um floppy zu mounten, file.tgz.001 zu verschieben, zu unmounten .. und die Schleife beginnt von vorne. Notwendig, wenn nicht klar ist,
wieviele Disks nötig: also nicht nur 2, sondern 3 oder 4.

Ich hatte folgenden Versuch gestartet:
for i in file.tgz.*i; do
mount /dev/fd0;
mv *.0* /floppy;
umount /dev/fd0;
echo Diskette wechseln ... [ENTER]
read
done

Ha, sagt der Fachmann - so läuft das natürlich nicht.
Ja, das hab ich auch gemerkt. Der Script schiebt den 1. gesplitteten file auf die Disk - aber nur zum Teil, und statt nun auf echo und read zu warten, schiebt er den anderen gesplitteten files auch nur zum Teil auf die Disk und kommt dann erst zu read ... und schliesst zu guter letzt den Script ab!
Wo ist der Fehler in meiner Schleife?

Danke. edico

bei Antwort benachrichtigen
edico Klaus_T „So, ich habe es jetzt: !/bin/sh a find -name file.tgz. for i in a do mount -t...“
Optionen

Hej Klaus,
die Variable a hats wohl gemacht, in die find alles einliest. Richtig?
Dein Mount-Befehl (der -adaptiert aufs cdrom- hatte mich schon mal zur Weissglut getrieben und -ich glaube- daher rührte der ursächliche verquere mount-command) führt zur Meldung:
mount: Die Befehlsausführung ist nur 'root' gestattet. Das führt dann dazu:
mv: kann reguläre Datei »/floppy/file.tgz.001« nicht anlegen: Keine Berechtigung
umount: /floppy ist laut 'mtab' nicht gemountet.
Bei mir (SuSE 7.0) läufts anscheinend nur mit mount /floppy (/cdrom). Diese Abänderung in Deinem Script führt zum Ergebnis!
#!/bin/sh
#Shellskript DataX2NT4
cd ~/tmp
tar czf file.tgz -X /home/edico/sup/x2nt4.notar /home/edico/daten/*
lxsplit -s file.tgz 1400k
rm file.tgz
a=`find -name 'file.tgz.*'`
for i in $a; do
echo Move $i
mount /floppy
mv $i /floppy
umount /floppy
echo Diskette wechseln
read
done
Juuhuu - Tusen tak. edico

bei Antwort benachrichtigen
Merci, Klaus. edico edico