Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Shellscript, Jobs nacheinander ausführen

  1. #1
    gerrie1978ch
    Gast

    Shellscript, Jobs nacheinander ausführen

    Hallo zusammen,

    habe mich hier mal angemeldet, in der Hoffnung, ein paar Denkanstösse zu bekommen.

    Ich bin nicht sehr erfahren, was Shell-Programmierung angeht, vielleicht könnt Ihr mir helfen. Ich will kein komplettes Script haben, einfach nur ein paar Hinweise.

    Folgendes möchte ich machen:

    1. Aus einem Verzeichnis alle *.txt in ein anderes Verzeichnis kopieren.

    2.Wenn alle kopiert sind, einen Befehl auführen. Dieser schreibt kurz vor Beendigung eine Datei in ein Verzeichnis. (Solange die da ist, wird der Prozess nicht beendet)

    3. Gucken, ob diese Datei in dem Verzeichnis liegt, wenn ja, weitere *.txt kopieren

    4. Wenn alle Dateien kopiert sind, die angelegte Datei aus Schritt 2 löschen. Dann wird der Prozess beendet.

    5. Überprüfen ob der Prozess mit Exit 0 beendet wurde, wenn ja, dann sollen nocheinmal Daten kopiert werden.

    Mein Problem ist eigentlich mehr oder weniger, wi ich überprüfe, ob die jeweiligen Einzelschritte komplett beendet wurden, bevor der nächste Schritt gemacht wird. Oder passiert das eh automatisch? Wäre es besser, für jeden Schritt ein einzelnes Skript zu schreiben, und dann jeweils am Ende das Skript für den nächsten Schritt aufzurufen?

    Ich danke Euch schon mal für die Hilfe,

    Gerrie

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von gerrie1978ch Beitrag anzeigen
    Mein Problem ist eigentlich mehr oder weniger, wi ich überprüfe, ob die jeweiligen Einzelschritte komplett beendet wurden, bevor der nächste Schritt gemacht wird. Oder passiert das eh automatisch?
    Das passiert automatisch - die Befehle werden nacheinander abgearbeitet.

    Zitat Zitat von gerrie1978ch Beitrag anzeigen
    Wäre es besser, für jeden Schritt ein einzelnes Skript zu schreiben, und dann jeweils am Ende das Skript für den nächsten Schritt aufzurufen?
    Da das kein besonders umfangreiches Skript wird, würde ich alles in eine Datei packen.

    Was dich speziell interessieren wird:
    Ob eine Datei vorhanden ist, prüft du mit
    Code:
    if [ -f "dateiname" ]; then ... fi
    Und den Exitcode des Prozesses steht direkt nach dem Prozessablauf in der Variablen $?.

  3. #3
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    zu 1: zb mit
    Code:
    for i in $(ls *.txt)
    do
      mv $i /pfad/zum/neuen/verzeichnis/
    done
    kannst du alle *.txt im aktuellen Verzeichnis nach /pfad/zum/neuen/verzeichnis verschieben.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    @jeebee: Und wozu genau machst du nicht einfach ein
    Code:
    mv *.txt /pfad/zum/neuen/verzeichnis/
    Quasi frei nach "wieso einfach wenns auch kompliziert geht?"

    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)

  5. #5
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    naja, stimmt, hab irgendwie gedacht, das gehe so nicht (war etwas anderes wo ich mal mmv gebraucht habe, was ich auch mit einem for hätte lösen können).
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  6. #6
    Registrierter Benutzer Avatar von fs111
    Registriert seit
    23.03.2002
    Beiträge
    594
    Zitat Zitat von peschmae Beitrag anzeigen
    @jeebee: Und wozu genau machst du nicht einfach ein
    Code:
    mv *.txt /pfad/zum/neuen/verzeichnis/
    Quasi frei nach "wieso einfach wenns auch kompliziert geht?"

    MfG Peschmä
    Bei sehr vielen Dateien kann das die maximale Größe der Kommandozeile sprengen, deswegen ist die Schleife sicherer.

    fs111
    ....::::Mein Blag::::....

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von fs111 Beitrag anzeigen
    Bei sehr vielen Dateien kann das die maximale Größe der Kommandozeile sprengen, deswegen ist die Schleife sicherer.
    Also erstens muss die Dateizahl dann schon recht gross sein. Recht sehr gross genauer gesagt.

    Zweitens kriegst du sicher ne Fehlermeldung.

    Drittens musst du dann schon ziemlich genau zirkeln, damit ein "mv *.txt /zielpfad" nicht geht, ein "ls *.txt" hingegen schon

    Schummeln und einen unendlich langen Zielpfad eingeben (/etc/../etc/... etc) gilt nicht!

    MfG Peschmä

    P.S. und viertens: ich behaupte ich spare durchs Verwenden von mv Anstelle von Schleifen mehr Zeit ein, als ich durchs schreiben solcher Beiträge verschwende
    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)

  8. #8
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zitat Zitat von peschmae Beitrag anzeigen
    Drittens musst du dann schon ziemlich genau zirkeln, damit ein "mv *.txt /zielpfad" nicht geht, ein "ls *.txt" hingegen schon
    Natürlich, das ls ist da ja auch quatsch. Richtig wäre es so:
    Code:
    for i in *.txt
    Damit hat man auch keine Probleme mit Dateinamen, die Leerzeichen enthalten.

  9. #9
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    öhhmm, wollte der OP nicht Dateien kopieren?

    @gerrie1978ch: vielleicht wolltest Du ja so etwas:
    Code:
    cp /Aus/einem/Verzeichnis/*.txt /ein/anderes/Verzeichnis && cp ...
    ?
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  10. #10
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Zitat Zitat von BLUESCREEN3D Beitrag anzeigen
    Natürlich, das ls ist da ja auch quatsch. Richtig wäre es so:
    Code:
    for i in *.txt
    Damit hat man auch keine Probleme mit Dateinamen, die Leerzeichen enthalten.
    Pssst

    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)

  11. #11
    gerrie1978ch
    Gast
    Hallo zusammen,

    erst einmal vielen Dank für Eure Antworten.

    Ja, die *.txt-Dateien will ich ganz einfach nur kopieren, und es sind nicht seeehr viele Dateien. Ein cp solltea eigentlich schon reichen.

    Kam bisher noch nicht dazu, mich um das Script zu kümmern, werde jetzt aber mal dran setzen, und Euch auf dem Laufenden halten

    Kennt eigentlich jemand ein gutes Script-Repository oder sowas?

    Danke,

    Gerrie

  12. #12
    gerrie1978ch
    Gast
    Hey Leute,

    ich hab alles hinbekommen, vielen Dank. Ist sicher nicht das schönste Script, aber es macht seinen Dienst, Kosmetik kommst später.


    Danke,

    Gerrie

Lesezeichen

Berechtigungen

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