wie Umgebungsvariablen übergeben

H

Harlekin87

Grünschnabel
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
 
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
 
Zuletzt bearbeitet:
ich würde die ermittelten Werte aus dem Unterprogramms als Übergabe parameter an das Hauptprgramm übergeben

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:
 
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
 
Zuletzt bearbeitet:
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.
 
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
 

Ähnliche Themen

Script für Netzaufbau (Bluetooth) - brauche Tips/Infos/Hilfe

probleme mit select()

Samba - Windows Client darf nicht zugreifen

Profile können sporadisch nicht geladen werden

Cygwin XFree86 Bericht

Zurück
Oben