Konflikt mit Perl

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von heuri, 05.05.2006.

  1. heuri

    heuri Jungspund

    Dabei seit:
    05.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Hallo erstmal,
    ich habe ein Problem bezüglich Perl mit Shell.
    Ich will mit perl einen Shell Code ausführen mit system();
    Leider kommt folgender Konflikt:
    Ich will eine Schleife ausführen:

    for i in $(find blablabla......

    anstatt aus i die Variable > $i zu machen ist unter Perl $( eine System Variable und macht daraus den EGID > Effective Group ID < also:

    for i in $(find blablabla...... > for i in 1001 1001find blablabla......

    Wie kann ich das umgehen?
    Gibt es eine alternative zu den $(????

    Vielen Dank!
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 05.05.2006
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Probier mal den qx-operator (= quote and execute).

    Code:
    perldoc -f qx
    in der Konsole.
     
  4. heuri

    heuri Jungspund

    Dabei seit:
    05.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Erstmal danke,
    leider kommt beim durchlauf mit

    qx() der gleiche fehler > mit dem **** EGID
    bei qw() macht er garnix im shellbefehl

    Gibt es sonst noch alternativen?
    DANKE! :hilfe2: :hilfe2:
     
  5. #4 Mµ*e^13.5_?¿, 05.05.2006
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Einfach escapen, und gut ist.
    "for i in \$(find blablabla......"
     
  6. heuri

    heuri Jungspund

    Dabei seit:
    05.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    So ist i keine Variable mehr ;(
     
  7. #6 Mµ*e^13.5_?¿, 05.05.2006
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Ich weiss zwar nicht genau, wie du das benutz, aber wenn du einfach "i" hinschreibst wird es auch nie eine Variable werden.
    Wenn du i als Perl-Variable benutzt musst du "$i" schreiben,
    und wenn du es als Shell-Variable benutzen willst muss du "\$i" schreiben.
    Wo liegt dabei also das Problem?
     
  8. heuri

    heuri Jungspund

    Dabei seit:
    05.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Also ich benutze es so:
    for file in $(find -type f)
    do
    echo"Datei $file"
    ........

    somit ist file dann die variable $file zumindest wenn ich nur den shell teil in einer .sh ausführe
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Eben, es soll als Shellvariable interpretiert werden und nicht als Perlvariable. Und genau dies ist Fall, wenn Du Mµ*e^13.5_?¿s Lösung mit dem Escapen nutzt. Alternativ kannst Du Deinen system-String in '...' einschliessen.

    Kleines Anschauungsbeispiel:

    Code:
    [~]$ perl -e 'system "a=123; echo \$a"'
    123
    
    Gruss, Xanti
     
  11. heuri

    heuri Jungspund

    Dabei seit:
    05.05.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Vielen Dank jetzt funktioniert es :)
     
Thema:

Konflikt mit Perl

Die Seite wird geladen...

Konflikt mit Perl - Ähnliche Themen

  1. Konflikte beim Update...

    Konflikte beim Update...: Hi @ all! Ich hab ne Reihe an Konflikten beim System-Update, bei denen ich nicht recht weiß was ich tun soll. Hier erstmal mein Output:...
  2. Konflikt zwischen IDE und SATA Platte

    Konflikt zwischen IDE und SATA Platte: Hallo leute, ich habe mir gestern nen neuen Rechner gekauft und habe nun folgendes problem. damit ich meine alten daten behalten kann, habe...
  3. endlose Abhängigkeitskonflikte - openSUSE

    endlose Abhängigkeitskonflikte - openSUSE: Hi, ich habe zurzeit openSUSE 10.2 und möchte auf 10.3 updaten. Ich hab mir die CD runtergeladen und Update ausgewählt. Ich kann jetzt aber...
  4. C++ Konflikt?!

    C++ Konflikt?!: Hallo, da ich nicht so viel praktische Erfahrung im Umgang mit C++ habe, komme ich auch nicht auf die Lösung meines Probs! ich habe eine...
  5. Konflikt bei xine installation

    Konflikt bei xine installation: Hi, habe da ein Problem bei der Instalation von xine? llinux-01vc:/home/masen/Downloads # rpm -Uvh libxine1-1.1.3-0.pm.0.i686.rpm warning:...