Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Shellscript mit for schleife in Linux

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.09.2010
    Beiträge
    23

    Talking Shellscript mit for schleife in Linux

    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?

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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:
    Code:
    for f in /B*; do 
      ./A $f C.root
    done
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.09.2010
    Beiträge
    23
    Ah Super! Danke!

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


    Also:

    Code:
    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.
    Geändert von grimnok (27-04-2011 um 16:05 Uhr)

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Naja, am einfachsten zu schreiben ist das wohl, wenn du zwei Schleifen schachtelst:
    Code:
    for d in /*; do
      for f in $d/*; do
         ./A $f $d.root
      done
    done
    Oder sowas in die Richtung.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •