PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shellscript mit for schleife in Linux



grimnok
21-04-2011, 10:38
Hallo Leute,

ich scheitere grade an einer einfachen Aufgabe:

Ich hab nen Befehl, den ich mehrfach auf verschiedene Dateien anwenden will. Aber so richtig tuts das noch nicht.

Was ich will;
Ich habe eine Funktion A , die mir eine Datei BBBBXBB.list einliest und eine C.root draus macht,
Von der Datei B.list gibt es verschiedene, die sich am (in diesem Fall) Punkt X durch eine Zahl unterscheiden.
Es sollen alle vorhandenen Variationen mittels A in die selbe Rootfile gesteckt werden.


In meiner XYZ.sh steht:

for ((i=0; i < 4; i++)) ;
do
./A /B* C.root
done


DIe 4 kommt daher das es die Varianten atm 0-3 gibt. Aber nun schreibt er mir nur 4 mal die selbe File statt alle 4 einmal...

wer kann helfen?

peschmae
22-04-2011, 15:16
Was deine Schleife macht ist einfach vier mal "./A /B* C.root" aufrufen. Das wird dann von der shell expandiert und ist dasselbe wie vier mal "./A /BBBB0BB.list /BBBB1BB.list /BBBB2BB.list /BBBB3BB.list C.root"

Was du möchtest ist möglicherweise sowas:


for f in /B*; do
./A $f C.root
done


MfG Peschmä

grimnok
27-04-2011, 14:59
Ah Super! Danke!

Aber wie geht das, wenn ich nun noch eine Variable mehr haben will?


Also:



for f in /X/B*; do
./A $f X.root
done



Ich habe also Files ../X/B* wobei eben X ein andres Unterverzeichnis angibt, B* ist das gleiche wie vorher. Diese sollen nun in X.root geschrieben werden, also das die Rootdatei als namen X hat.

peschmae
01-05-2011, 16:23
Naja, am einfachsten zu schreiben ist das wohl, wenn du zwei Schleifen schachtelst:


for d in /*; do
for f in $d/*; do
./A $f $d.root
done
done


Oder sowas in die Richtung.

MfG Peschmä