Problem mit den Linux-Bash-Variaben

Post Reply
Message
Author
Holger

Problem mit den Linux-Bash-Variaben

#1 Post by Holger »

OK:
Folgendes Problem:
Ich arbeite an einem Script, das auf bestimmte Variablen unterschiedlich reagiert.
Wenn ich jetzt eine variable XYZ=abc in der Shell setze, dann erkenn die Shell die zwar (d.h. ich kann sie mir per ECHO $XYZ anzeigen), aber wenn ich sie mir im Script per echo $XYZ anzeigen will, dann kommt da nix ... wie bekomm ich die variable nun rein?
muss ich die anders setzen um sie z.b. GLOBAL, also für alle scripts zugängig zu machen oder wie macht man das?

sorry für diese bescheuerte frage, aber ich lerne eben gerne dazu und DANKE AN ALLE DIE HIER HELFEN!!!!

Andreas B.

Re: Problem mit den Linux-Bash-Variaben

#2 Post by Andreas B. »

global

export $LFS=/mnt/lfs

;)

Andreas B.

Re: Problem mit den Linux-Bash-Variaben

#3 Post by Andreas B. »

edit
export LFS=/mnt/lfs

Holger

Re: Problem mit den Linux-Bash-Variaben

#4 Post by Holger »

danke für deine hilfe!
jetzt komme ich endlich weiter.
ich bin zwar ein noob, arbeite aber schon ganz gut drauf ... LINUX IST DAS BESTE ;)
so ich arbeite nähmlich an start-scripts für einen gameserver. wenn ich damit fertig bin kann ich das ganze auch per webinterface (PHP RULT! :D) steuern ... das wird auf der nächsten lan-party ein neuer kracher ;)

DANKE AN ALLE DIE HIER SO FLEIßIG MITHELFEN!!!!!
DANKE DAS ES EUCH GIBT!!!!!

Holger

Re: Problem mit den Linux-Bash-Variaben

#5 Post by Holger »

also ich nochmal:

wieder ein problem:

wenn ich die variablen im der console mit EXPORT XYZ="variableninhalt" setze funzt das. fürhre ich aber wiederum ein script aus, das die variablen mit EXPORT XYZ="variableninhalt" setzen soll, funzt das wieder nicht ... wie bekomme ich die variable AUS dem script ins SYSTEM und dann wieder IN EIN ANDERES SCRIPT???

Jochen

Re: Problem mit den Linux-Bash-Variaben

#6 Post by Jochen »

Gar nicht. Das ist ein Feature, kein Bug. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Wenn Du eine Variable exportierst, stellst Du sie ins sogenannte "Environment" Deines Prozesses. Rufst Du nun ein Skript auf, wird dafür ein neuer Prozess als Kopie des aufrufenden Prozesses erzeugt. Daher ererbt der Kindprozess auch die Environment-Variablen. Konsequenz: Nach einem "export X=y" wird die Shellvariable X zur Umgebungsvariablen X und aufgerufene Programme können auf X zugreifen. Wenn nun ein solcher Kindprozess <i>seine</i> Umgebungsvariable X ändert, passiert mit der Umgebungsvariablen X des <i>Elternprozesses</i> gar nichts. Schliesslich sind es ja zwei unterschiedliche Prozesse, jeder mit seinem eigenen Environment!

Kanonische Lösung: Wenn Du eine Umgebungsvariable durch Kindprozesse verändern lassen willst, verwende die Kommandosubstitution.<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">#!/bin/bash
X=y
export X
X=$(mein-untergeordnetes-Skript)
# alternativ die alte sh-Schreibweise: X=`mein-untergeordnetes-Skript`
echo $X
</font><hr></pre></blockquote>
Die Shell führt "mein-untergeordnetes-Skript" aus und ordnet alles, was das Skript auf die Standardausgabe schreibt, der Variablen X zu.

Jochen

Holger

Re: Problem mit den Linux-Bash-Variaben

#7 Post by Holger »

das heist ich muss auf dem cfg-script heraus (welches die variablen setzt) das eigentliche start-script aufrufen .... gut ich probiers mal!

Holger

Re: Problem mit den Linux-Bash-Variaben

#8 Post by Holger »

also das funktionier auf jeden fall erst mal ... nur bin ich mit dem ergebniss noch nciht ganz zu frieden ... wie kann man das denn "UMKEHREN???"

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Problem mit den Linux-Bash-Variaben

#9 Post by max »

Tipp:
du kannst in einer/n Shell/Skript auch anders andere Skripte aufrufen.
. skriptname
punkt-leerzeichen-skriptname
Das bewirkt das dieses in der gleichen Shell gestartet wird und Variablen die dort setzt auch im eigentlichen Skript zur Verfügung stehen.
JEtzt kannst du in diesen Skript nichts anderes tun als Variablen setzen.
GRuss Max

petameta
prolinux-forum-admin
Posts: 1294
Joined: 14. Feb 2003 13:19

Re: Problem mit den Linux-Bash-Variaben

#10 Post by petameta »

Wäre es nicht evtl. einfacher, den Variablenwert in eine Datei zu schreiben, dadurch könnten die Skripte getrennt voneinander ablaufen.

Würde ungefähr so aussehen:

Abspeichern der Variablen: echo $XYZ > tmpfile

Wiedereinlesen in einem anderen Skript: XYZ = 'cat tmpfile'

Hat so seine Vor- und Nachteile, kommt drauf an, was genau du machen willst.
Last edited by petameta on 12. Mar 2003 0:14, edited 2 times in total.

Post Reply