wie Umgebungsvariablen übergeben

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Harlekin87, 28.06.2010.

  1. #1 Harlekin87, 28.06.2010
    Harlekin87

    Harlekin87 Grünschnabel

    Dabei seit:
    28.06.2010
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo zusammen,
    ich brauch mal eure Hilfe, weil ich grad nicht weiterkomme.
    kurz zum Sachverhalt...es gibt ein Oberprogramm(OP) und ein Unterprogramm(UP)
    es wird das UP ausgeführt und in diesem werden mehrere Umgebungsvariablen gesetzt...diese Variablen sollen jetzt an das OP übergeben werden
    Wie kann ich diese Umgebungsvariablen an das OP übergeben?!?!
    die geht unter Windows aber nicht unter UNIX...deshalb die Idee dass man die variablen in ein String wandelt und diesen übergibt - geht das? wie geht das? gibt es bessere Möglichkeiten?

    hab dafür noch kein Programm oder so es geht erst mal nur um die Theorie mehr oder weniger bevor man mit dem Programmieren anfängt...
    zur Ergänzung: es war einmal ein Windows-Batch und soll nun ein UNIX-Shell (bash) werden
     
  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 tennessee, 28.06.2010
    Zuletzt bearbeitet: 28.06.2010
    tennessee

    tennessee Linuxfan

    Dabei seit:
    22.04.2006
    Beiträge:
    134
    Zustimmungen:
    0
    ich würde die ermittelten Werte aus dem Unterprogramms als Übergabe parameter an das Hauptprgramm übergeben.


    ARG1=$(hostname) --> Wäre in dem Fall die Umgebungsvariable hostname

    ./programm ARG1
     
  4. #3 Harlekin87, 28.06.2010
    Harlekin87

    Harlekin87 Grünschnabel

    Dabei seit:
    28.06.2010
    Beiträge:
    2
    Zustimmungen:
    0
    ja das ist schon rihtig, aber die eigentliche Frage ist wie ich das übergebe??
    unter Windows lief das ganz gut aber UNIX kann das ja so nicht - es kann keine Umgebungsvariablen, welche im Unterprogramm gesetzt wurden, an das Oberprogramm übergeben...genau hier weis ich nicht weiter :think:
     
  5. #4 tennessee, 28.06.2010
    Zuletzt bearbeitet: 28.06.2010
    tennessee

    tennessee Linuxfan

    Dabei seit:
    22.04.2006
    Beiträge:
    134
    Zustimmungen:
    0
    was nach dem Programm kommt sind übergabeparamter genau wie unter windows auch
    wenn du also ./programm $VAR ausführst ist der Wert von $VAR der erste übergabeparameter $1
    Mach Dir mal so ein Skript:
    Code:
    #!/bin/bash
    echo "Hallo $1 $2"
    
    und rufe es so auf:

    ./skript Herr Meier

    Dann siehst du was ich meine

    Diese Aufruf startest Du halt innerhalb einer FUnktion in deinem Unter
    programm


    Code:
    
    #!/bin/bash 
    # Ich bin das Unterprogramm
    
    function starteHauptprogramm {
    ARG1=$(hostname)
    /home/skripte/hauptprogram.sh $ARG1
    }
    
    starteHauptprogramm
    
     
  6. #5 floyd62, 28.06.2010
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Versuch mal mit ., also etwa
    Code:
    # OP
    . UP
    echo X ${X:-nada}
    
    und
    Code:
    # UP
    X=1
    
    (damit wird das UP effektiv in der gleichen Shell ausgeführt; empfiehlt sich etwa für das Laden von Config-Files etc.),

    oder mit eval:
    Code:
    # OP
    eval $(UP)
    echo X ${X:-nix}
    
    und
    Code:
    # UP
    echo X=1
    
    (dann muss das UP die zu setzenden Variablen in Shell-Schreibweise ausgeben, und das Ergebnis wird von OP einfach als Kommando ausgeführt)

    Wenn es darum geht, ein Batch-File von Windows auf UNIX rüberzuziehen, würde ich erst einmal versuchen, mit '.' zu arbeiten - dazu muss man nicht das UP komplett so umschreiben, dass es die Variablen in der gewünschten Form ausgibt ...

    Gruss,
    A.
     
  7. #6 Greenleon, 29.06.2010
    Greenleon

    Greenleon Tripel-As

    Dabei seit:
    08.01.2007
    Beiträge:
    184
    Zustimmungen:
    0
    Umgebungsvariablen werden automatisch an das Unterprogramm weitergegeben. Parameteruebergabe ist hier absolut ueberfluessig. Wenn es allerdings um einfache Variablen geht, die nicht mit export zu Umgebungsvariablen gemacht wurden, dann gibt es 2 Moeglichkeiten:

    1. Mit export in eine Umgebungsvariable "umwandeln"
    2. Die von meinem Vorpostern genannte Parameteruebergabe
     
  8. Anzeige

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

wie Umgebungsvariablen übergeben

Die Seite wird geladen...

wie Umgebungsvariablen übergeben - Ähnliche Themen

  1. Umgebungsvariablen vergleichen von 2 unterschiedlichen Servern

    Umgebungsvariablen vergleichen von 2 unterschiedlichen Servern: Hallo Zusammen, Situation: Ich habe 2 Server. Dort wird ein Java Programm ausgeführt. Auf dem einen Server klappt es - auf dem anderen wird eine...
  2. Java kara, brauche Umgebungsvariablen

    Java kara, brauche Umgebungsvariablen: Hi, ich muss für die Schule unter Java kara programmieren können. Leider brauche ich dafür unter "etch" die passenden Umgebungsvariablen. Dumm...
  3. sed suchen und ersetzen mit Variable übergeben?

    sed suchen und ersetzen mit Variable übergeben?: hallo, ich habe folgenden sed-Befehl, der schon super ist und auch alles tut, was er tun soll, nur eben natürlich das $i einfach hinschreibt...
  4. usernamen als argument übergeben

    usernamen als argument übergeben: Hi ich bin anfänger auf dem gebiet und möchte ein einfaches backup script schreiben. #!/bin/bash #Bei Ausführung des Scripts werden alle Datein...
  5. Zeichenkette per Skript an shell übergeben

    Zeichenkette per Skript an shell übergeben: [gelöst]Zeichenkette per Skript an shell übergeben Hallo Leute, sitze momentan etwas ratlos vor einem Shell-Skript (Bin kompletter Anfänger...