Anzeige:
Ergebnis 1 bis 14 von 14

Thema: variabelen scriptübergreifend ???

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71

    variabelen scriptübergreifend ???

    hab im chatprogramm ein script aktiv das auf eingaben reagiert und dabei durch die eingabe 3 verschiedene variabelen definiert
    nun soll von dem script ein anderes script gestartet werden
    und eben diese 3 variabelen im neuen script zur verfügung stehen

    weiss einer wie ich sowas machen kann ???

  2. #2
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Einfach die Variablen abspeichern, und das andere Programm liest die dann zum Startzeitpunkt (oder regelnmässig) ein.

    Erst wenn das zweite Programm die Variablen auch verarbeitet zurückgeben will, wird es kompliziert.

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Hallo Chakotay,

    im BASH-Script würde ich die 3 Variablen einfach exportieren, dann stehen sie im zweiten Script auch zur Verfügung.
    export VAR1 VAR2 VAR3
    Genau wie Molaf schreibt, ist die verarbeitete Rückgabe an Script 1 jedoch nicht so einfach möglich.

    ODER besser: Das zweite Script mit vorangestelltem "Punkt Blank" aus dem ersten Script starten, dann geht´s auch ohne export. Dann ist auch das Verändern der Variablen im Script 2 kein Problem, da sie nach Ende von Script 2 dem Script 1 mit neuem Inhalt zur Verfügung stehen.

    ... alles bezogen auf BASH ... aber was da geht, geht sicher ähnlich auch woanders ...

    Gruss zst

  4. #4
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    ne also das erste script definiert die variabelen

    das zweite verwendet diese dann nur ändert sie aber nicht

    das mit dem export klappt irgendwie noch nicht (haste viell ne seite mit nem beispiel?)

    hab sonst auch mit nem kleinen selbstgemachten modul rumexperimentiert

    da fehlt mir nur die möglichkeit ne variabele temp vom hauptscript aus reinzuladen und nach gebrauch wieder zu entfernen :-)

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.09.2005
    Beiträge
    61
    Hallo Chakotay,

    ich kann es fast nicht glauben, dass es bei Dir nicht funktioniert ...
    In Script 1:
    Code:
     export VAR="HALLO"
    In Script 2, welches aus Script 1 heraus gestartet wird, ist VAR dann verfügbar.
    Wie mehrfach von mir erwähnt: BASH
    Die meisten Deiner Beiträge nennen PERL ...

    Gruss zst

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Sollte es um PERL gehen, schau dir fork() an, das macht nen neuen Prozess, der eine exakte Kopie des Prozesses in dem es aufgerufen wurde darstellt, also inkl. der Variablen. Mittels Pipes (pipe()) kannst du hier sogar Daten von den beiden Prozessen hin und herstreamen. Eine Pipe für unidirktionalen Datanstrom, zwei für bidirektionalen (also zwei mal unidirektional bloss halt einmal vice versa). Alternativ geht das unidirektional auch mit open() (mit "-|" bzw. [i]"|-" als Datei in den Argumenten) bi- oder gar "tridirektional" mit open2() oder open3(), welche aus den Modulen IPC::Open2 respektive IPC::Open3 exportiert werden...
    Achja, SystemV-IPC mit Shared-Memory, etc. wäre auch noch denkbar oder Threads, welche aber AFAIK immer noch experimentell sind...

    Mit open() eine Pipe zu öffnen ginge auch in ein fremdes Programm, statt dem - muss dann der Pfad zur ausführbaren Datei angegeben werden, das wird dann in eine Subshell verfrachten und je nach dem ob der '|' vor oder hinter dem Pfad steht STDIN des Programm mit dem STDOUT deines Skriptes oder STDIN deines Sktiptes mit STDOUT des Programms verknüpft. Mit open2() und open3() lässt sich halt beides auf einmal machen, bzw. auch noch der STDERR des Programms abgreifen...

    Wenns nicht um PERL geht, vergiss es, obwohl man Pipes auch in der BaSh und anderen Shells verwenden kann. Mittels temporärer Dateien liess sich eine Art "Shared-Memory" auf ziehen...
    Aber vielleicht ist das alles auch schonüber dimensioniert für dein Vorhaben, dass weiss ich jetzt natürlich nicht, dann nutz das mit dem export wie bereits erwähnt...
    chmod -R +t /*

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    sry hatte vergessen es beizuschreiben

    natührlich rede ich von perl^^
    das muss ich mir nachher wenn ich vonner arbeit komm nochmal genauer anschauen

  8. #8
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    ok
    nach längerem grübeln über http://de.selfhtml.org wegen des fork()... bin ich nu total iritiert

    also ich hab ein aktives perlscript :-)
    darin ist in einer sub die nur auf nen bestimmten input reagiert zB
    Code:
    sub auto_test
    {
    my $INPUT = join ( " ", @_);
    my $me = ( IRC::get_info(1) );
    
    if($INPUT =~ m/:(.*)\!(.*) PRIVMSG $me :(.*)/) 
    {
    $NICK = $1;
    $ADRESS = $2;
    $MESS = $3;
    
    Xchat::command("load /test/pfad/zum/script.pl");
    return 1;
    } else { return 0; }
    return 1;
    }
    nu soll das script welches da aufgerufen wurde den inhalt von $NICK $ADRESS und $MESS als label in einer gtk2 gui anzeigen
    dazu muss ich die variabelen aber erst mal ins 2. script kriegen

  9. #9
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Es bleibt natürlich auch noch die Möglichkeit Daten als Argumente im Aufruf zu übergeben. Findeste im aufgerufenen Skript dann in @ARGV...
    chmod -R +t /*

  10. #10
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    gibt es noch ne möglichkeit ?

    in einem xchat load kann ich so nix hinterschreiben

  11. #11
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Naja, fällt mir eigentlich nur noch der nicht so schöne Umweg über temporäre Dateien ein... Oder Umgebungsvariablen schreiben, aber das ist noch unschöner...
    Aber ich kenn diese Module nicht die du da benutzt und was du nun genau machen möchtest hab ich auch noch ned so 100% verstanden. Evtl. muss man das einfach nur anders strukturieren um dann mit den gegebenen Methoden ans Ziel zu kommen...
    chmod -R +t /*

  12. #12
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    hmm

    naja bis mir ne schönere lösung einfällt mach ich es erstmal mit der tempdatei :-)
    das funktioniert und ist recht einfach zu schreiben^^ (da schon fertig ^^)

    trotzdem hier danke für alle hilfestellungen :-)

  13. #13
    Registrierter Benutzer
    Registriert seit
    15.03.2007
    Beiträge
    6
    Auch auf die Gefahr hin, mich mittels meines unqualifizierten Senfes unbeliebt zu machen, ich habe keine Ahnung von Perl. Aber lassen sich die Variablen nicht als Kommandozeilenargumente übergeben?

  14. #14
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    Das geht prinzipiell schon, aber wie in jeder anderen Sprache auch, nur dann wenn das andere Programm gestartet wird. Wenn Variablen zwischen zwei laufenden Programmen geteilt werden sollen, ist es nicht mehr ganz so einfach...

Lesezeichen

Berechtigungen

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