Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl - Seltsamer Fehler
Ich habe in meinem Perlscript eine Zeile
$ergebnis =`grep -i "$eingabe" bilder.txt`;
Es wird also eine Substitution (``) verwendet.
Wenn ich nun z.B. in $eingabe
" bilder.txt ; ./ls & ; echo "test
eingebe, erhalte ich immer den Fehler
sh: Syntax error: ";" unexpected
Es liegt an dem ";" nach dem "&".
Führe ich allerdings auf der shell
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?
Moin moin,
ich hab von Perl zugegebenermaßen keine Ahnung, aber die beschriebene Fehlermeldung
sh: Syntax error: ";" unexpected
bekomme ich auch bei
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,
Moin,
... 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:
grep -i "" bilder.txt ; ./ls & echo "test" bilder.txtNebenbei: Der Befehl
sh -c grep -i "" bilder.txt ; ./ls & ; echo "test" bilder.txtist mitnichten der, den das Perl-Script ausführt. Das würde eher durch
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.