Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Perl - Seltsamer Fehler

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.11.2005
    Beiträge
    94

    Perl - Seltsamer Fehler

    Ich habe in meinem Perlscript eine Zeile

    Code:
    $ergebnis =`grep -i "$eingabe" bilder.txt`;
    Es wird also eine Substitution (``) verwendet.

    Wenn ich nun z.B. in $eingabe

    Code:
    " bilder.txt ; ./ls & ; echo "test
    eingebe, erhalte ich immer den Fehler

    Code:
    sh: Syntax error: ";" unexpected
    Es liegt an dem ";" nach dem "&".


    Führe ich allerdings auf der shell

    Code:
    sh -c grep -i "" bilder.txt ; ./ls & ; echo "test" bilder.txt
    manuell aus, funktioniert alles! Und genau diese Zeile führt ja Perl auch aus...


    Kann mir das bitte jemand erklären?

  2. #2
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    ich hab von Perl zugegebenermaßen keine Ahnung, aber die beschriebene Fehlermeldung
    Zitat Zitat von klinsel Beitrag anzeigen
    Code:
    sh: Syntax error: ";" unexpected
    bekomme ich auch bei
    Zitat Zitat von klinsel Beitrag anzeigen
    Code:
    sh -c grep -i "" bilder.txt ; ./ls & ; echo "test" bilder.txt
    d. h. wenn ich ``bilder.txt'' durch eine bei mir vorhandene Datei ersetze.
    Vielleicht hat es ja damit zu tun, daß Du versuchst, ./ls aufzurufen? Zumindest auf meinem System gibt es keinen `ls' im aktuellem Verzeichnis, so ich mich nicht gerade in /bin aufhalte...
    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  3. #3
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von rais Beitrag anzeigen
    ... Vielleicht hat es ja damit zu tun, daß Du versuchst, ./ls aufzurufen? Zumindest auf meinem System gibt es keinen `ls' im aktuellem Verzeichnis, so ich mich nicht gerade in /bin aufhalte...
    MfG,
    Nö, dann würde "./ls: file or command not found" kommen. Der gleiche Fehler passiert auch, wenn Du ./ls durch ls ersetzt.

    @klinsel: Auch bei mir führt das immer zu einem Syntax-Error, auch wenn ich das so wie Du in der Shell absetze. Das erscheint auch logisch - siehe man bash:
    Lists
    A list is a sequence of one or more pipelines separated by one of the operators ;, &,
    &&, or ||, and optionally terminated by one of ;, &, or <newline>.
    Ein & IST also schon der Trenner, das Semikolon danach ist zuviel. Lesen bildet (auch mich, ich habe meinen Irrtum erst jetzt gesehen) ;-) So würde es also gehen:
    Code:
    grep -i "" bilder.txt ; ./ls & echo "test" bilder.txt
    Nebenbei: Der Befehl
    Code:
    sh -c grep -i "" bilder.txt ; ./ls & ; echo "test" bilder.txt
    ist mitnichten der, den das Perl-Script ausführt. Das würde eher durch
    Code:
    sh -c 'grep -i "" bilder.txt ; ./ls & ; echo "test" bilder.txt'
    erreicht werden - aber auch das gibt den Fehler - aus den o. g. Gründen.

    Ach ja: Was zum Geier willst Du denn mit dieser abenteuerlichen Konstruktion erreichen???

    Jan
    Geändert von jan61 (23-01-2008 um 22:51 Uhr) Grund: & muss nicht am Ende stehen ...

Lesezeichen

Berechtigungen

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