perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 32
Click for quality!




10.02.2012 / 10:03

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragFehler mit system
Seitenanfang
Hallo,
ich will mit Perl einen kleinen Shell Befehl ausführen, wenn ich das Shell Script in einer .sh ausführe funktioniert es auch wunderbar, wenn ich es aber in eine .pl einfüge innerhalb des befehls:
system(" "); kommt ein Fehler.

Ich will den Shellbefehl: ... for file in $(..... ausführen leider macht er aus "$(" einfach "1001 1001". Wie kann ich das verhindern?

Vielen Dank!

MfG heuri

Datum: 02.05.2006-19:37

Beitragre: Fehler mit system
Seitenanfang
In dem du den String zwischen single quotes ' statt double quotes " setzt - dann wird dieser nicht interpoliert.

Datum: 02.05.2006-20:02

Beitragre: Fehler mit system
Seitenanfang
Hallo,
das " > ' ändern kommt leider auch nicht in Frage , da ich ja im Shell Script Variablen hereinlade (vom perl script), daher kann ich auch kein shell script außerhalb ausführen, gibt es keine Alternativen? Ich will beispielsweise folgendes machen ....for file in $(find blablabla......
einen find oder grep etc. befehl ausführen.....
Ohne dem $ führt es aber nicht aus, ist vielleicht while die Lösung oder muss man da auch $( nehmen?

Danke!

Datum: 03.05.2006-14:00

Beitragre: Fehler mit system
Seitenanfang
Hi,

oder quote das $ einfach aus : "for \$ in blabla"

Gruß Ralf

Datum: 03.05.2006-17:33

Beitragre: Fehler mit system
Seitenanfang
Danke,
aber leider wenn ich das ausquote ist ja das file von "for file " keine variable mehr :(.

Datum: 03.05.2006-18:21

Beitragre: Fehler mit system
Seitenanfang
Hi,

unter Perl gibt die vordefinierte Variable $( die EGID (Effective Group ID) aus. Auf der bash startet $(command) eine Subshell und kehrt nach der Ausführung wieder in die aufrufende Shell zurück.

Beschreibe mal genauer, was Du machen willst.

Ansonsten hast Du aber auch die Möglichkeit, Deine Shellbefehle, in ein ShellScript zu packen und das in Perl dann aufzurufen.

script.sh


for I in LISTE
do
mach irgendwas mit $I
done

script.pl


system( "./script.sh" );

-uw

Datum: 02.05.2006-21:28

-






-
-