exit steigt auch aus shell aus

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mampfi
Beiträge: 1979
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

exit steigt auch aus shell aus

Beitrag von mampfi » 15.06.2013 12:23:29

Ich hab am Anfang eines Skriptes folgendes:

ping -c 3 notebook

if [ $? != 0 ]
then
echo "Rechner ist nicht verfügbar"
exit 0
fi;

Leider steigt mir die if-Abfrage nicht nur aus dem Skript aus, sondern auch aus der ganzen Shell (die in dem Fall als root geöffnet habe)

Ausprobiert hab ich bisher exit 0 und exit 1
Es gibt viele Foren und eine Welt ausserhalb

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: exit steigt auch aus shell aus

Beitrag von rendegast » 15.06.2013 14:28:23

Irgendwo 'set -e' gesetzt, eventuell implizit?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: exit steigt auch aus shell aus

Beitrag von cosmac » 15.06.2013 14:42:35

hi,

wie rufst du das Script denn auf?

Code: Alles auswählen

./script1
. script2
für script1 wird eine neue shell gestartet und nur die wird beim exit beendet. script2 wird von deiner shell selbst ausgeführt, das exit wirkt also so, als ob du es auf der Kommandozeile eingetippt hättest.
Beware of programmers who carry screwdrivers.

mampfi
Beiträge: 1979
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: exit steigt auch aus shell aus

Beitrag von mampfi » 15.06.2013 14:49:10

rendegast hat geschrieben:Irgendwo 'set -e' gesetzt, eventuell implizit?

kann man das zurückstellen? Das würde ich dann "profülaktisch" machen.


Das Skript bei mir ist ein einziges, es wird also alles auf der Kommandozeile gestartet, ich lande dann nicht mehr auf der Kommandozeile sondern die geht gleich ganz zu.
Es gibt viele Foren und eine Welt ausserhalb

DeletedUserReAsG

Re: exit steigt auch aus shell aus

Beitrag von DeletedUserReAsG » 15.06.2013 23:21:08

Rufst du das Script möglicherweise mit 'source' auf? Dann wäre es normales Verhalten (würde auch die fehlende She-Bang-Zeile erklären).

cu,
niemand

mampfi
Beiträge: 1979
Registriert: 16.08.2005 18:15:29
Lizenz eigener Beiträge: GNU General Public License
Wohnort: münchen

Re: exit steigt auch aus shell aus

Beitrag von mampfi » 15.06.2013 23:34:17

Mit dem Punkt:

. rsync_daten_notebook

Es wird ein anderes Skript aufgerufen, aber erst nach der if-Abfrage mit exit
Es gibt viele Foren und eine Welt ausserhalb

DeletedUserReAsG

Re: exit steigt auch aus shell aus

Beitrag von DeletedUserReAsG » 15.06.2013 23:42:05

Siehe cosmacs Beitrag. In der Form sourcest du das Script, das Verhalten ist demnach normal. Möglicherweise möchtest du es mit ./rsync_daten_notebook aufrufen? Dann verhält es sich, wie man es von einem Script erwartet :)

cu,
niemand

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: exit steigt auch aus shell aus

Beitrag von Cae » 15.06.2013 23:42:16

Ja, dann mach's richtig mit

Code: Alles auswählen

$ ./foo
-- dann hast du diesen Effekt nicht (und noch ein paar andere nicht, z.B. dass eigentlich temporaere Variablen vom Skript nach dessen Ende noch in der umgebenden Shell herumschwirren, traps nicht wie geplant ausloesen, etc.).

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten