Anzeige:
Ergebnis 1 bis 4 von 4

Thema: while Schleife und eine Funktion

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Ort
    Schierling
    Beiträge
    9

    while Schleife und eine Funktion

    Hallo Forum,
    Ich bin ziemlicher Anfänger was Shellscripts angeht. Ich habe ein Script, in dem Ordner kopiert werden, was ohne Probleme funktioniert. nur würde ich gerne eine Ausgabe am Bildschirm erzeugen, dass sich noch was bewegt.

    Mein Ansatz:

    copy () {
    cp /ordner/ /ordner2 -R;
    return 0;
    }

    while copy
    do
    printf ".";
    sleep 1;
    done

    Leider bekomme ich die Ausgabe "." leider nicht.

    Vielleicht kann mir jemand von euch helfen, oder einen anderen Ansatz geben.

    Gruß

    Kees

  2. #2
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Hallo,

    eigentlich sollten in deinem Terminal sehr viele Punkte erscheinen. Steht da wirklich nichts?

    Übrigens macht der Code nicht das, was du erwartest: die Funktion copy wird viele Male aufgerufen, die Ausgabe erscheint aber erst jeweils nach einem kompletten Kopiervorgang.

    Gruß, Florian
    Ein gebrechlich Wesen ist der X-Server.

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.05.2009
    Ort
    Schierling
    Beiträge
    9
    Zitat Zitat von ContainerDriver Beitrag anzeigen
    Hallo,

    eigentlich sollten in deinem Terminal sehr viele Punkte erscheinen. Steht da wirklich nichts?
    Leider nicht bekomme ich keine "." dargestellt.

    Zitat Zitat von ContainerDriver Beitrag anzeigen
    Übrigens macht der Code nicht das, was du erwartest: die Funktion copy wird viele Male aufgerufen, die Ausgabe erscheint aber erst jeweils nach einem kompletten Kopiervorgang.
    Das verstehe ich dann nicht. Es sollte doch eigentlich so sein, dass solange die Funktion läuft der Inhalt der Schleife wiederholt wird, oder?

    Gruß

    Kees

  4. #4
    Registrierter Benutzer Avatar von ContainerDriver
    Registriert seit
    10.01.2003
    Beiträge
    418
    Zitat Zitat von Kees_23 Beitrag anzeigen
    Leider nicht bekomme ich keine "." dargestellt.
    Kannst du bitte mal den kompletten Quellcode sowie den Aufruf des Skripts posten (bitte die Code-Tags verwenden)? Was passiert, wenn du printf durch echo ersetzt?

    Das verstehe ich dann nicht. Es sollte doch eigentlich so sein, dass solange die Funktion läuft der Inhalt der Schleife wiederholt wird, oder?
    Nein, die Funktion wird im Schleifenkopf aufgerufen, komplett abgearbeitet und dann wird anhand des Rückgabewertes entschieden, ob der Schleifenrumpf ausgeführt wird.

    Wenn du eine Art Fortschrittsbalken haben willst, dann kannst du mal folgenden Thread lesen: http://www.mrunix.de/forums/showthread.php?t=56364, oder du machst es in dieser Art (ungetestet und etwas unsauber wegen der temporären Datei):
    Code:
    TMPFILE=/tmp/copy.$$
    
    copy ()
    {
        rm -f $TMPFILE
        touch $TMPFILE
        #Befehl
        rm -f $TMPFILE
    }
    
    copy &
    while [ -e $TMPFILE ]; do
        echo -n .
        sleep 0.5
    done;
    Gruß, Florian
    Ein gebrechlich Wesen ist der X-Server.

Lesezeichen

Berechtigungen

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