PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : exportieren einer Variabel aus Shell-Script



Röme
16-07-2002, 20:48
Hi Leute

Ich bin in den Anfängen der Shell-Programmierung und wollte mir ein script schreiben mit dem ich auf meinen Notebook zwischen den verschiedenen Internetzugangsarten hin und her switchen kann.
Das klappt auch ganz gut, ausser des exports der Variabel INET, diese brauche ich damit ich aufgrund der vorheigen Einstellung die richtigen Daemons beenden/starten kann.
So sieht das Script aus:

#!/bin/bash
if [ "$1" = "mobile" ]
then
if [ "$INET" = "line" ]
then
service pcmcia stop
fi
if [ "$INET" = "net" ]
then
service pcmcia stop
service network stop
route del default
fi
service irda start
cp /etc/wvdial.conf.mobile /etc/wvdial.conf
export INET=mobile
fi
if [ "$1" = "line" ]
then
if [ "$INET" = "mobile" ]
then
service irda stop
fi
if [ "$INET" = "net" ]
then
service pcmcia stop
service network stop
route del default
fi
service pcmcia start
cp /etc/wvdial.conf.line /etc/wvdial.conf
export INET=line
fi
if [ "$1" = "net" ]
then
if [ "$INET" = "mobile" ]
then
service irda stop
fi
if [ "$INET" = "line" ]
then
service pcmcia stop
fi
service pcmcia start
service network start
route add default gw 192.168.1.1 eth0
export INET=net
fi
Ich habe auch schon probiert in den Verzweigungen, nur der Variable INET den Wert zuzuweisen und den export dann am Schluss zu machen, klappt leider auch nicht.

Kann mir jemand auf die Sprünge helfen?

Gruss
Röme

anda_skoa
16-07-2002, 21:03
Ich glaube, export mach die Variable nur für untergeordnete shells sichtbar.
Wenn die shell, die das script ausführt beendet wird, verschwindet auch INET.

Wenn du das script zB in .bashrc aufrufen willst, dann mußt du es sourcen und nicht starten:
Dann führt nämlich der aktuelle shell interpereter das script aus, keine neue Kindshell.

also statt
switch.sh

. switch.sh

Du kannst das auf der Commandline leicht überprüfen:

#> switch.sh
#> echo $INET
output wahrscheinlich leer, falls INET nicht woanders definiert

#> . switch.sh
#> echo $INET
output sollte der inhalt von INET sein.

Ciao,
_

Röme
16-07-2002, 21:13
Das wars.

vielen Dank

Gruss
Röme