Wie Shellfunktion abbrechen?

20/01/2008 - 20:52 von Dr. Thomas Bengs | Report spam
Hallo Muscheln,

Ich schreibe mir für den Hausgebrauch einfache Scripte. Dabei habe ich
eine Shellfunktion, welche verschieden Sachen austestet

FUNKTION () {
if test = ...
}

und die soll dann bei der ersten Übereinstimmung eine Variable setzten
und auffhören, das eigentl. script soll dan weiterlaufen. Also scheidet
"exit" aus. Wie kann man an so einer Stelle nur die Funktion beenden?

Des weiteren teste ich einen Ausdruck, ob er ein Leerzerzeichen ist. Wie
macht man dass? Ich benutze folgenden Workaround

if test `ls -l $MOD | cut --output-delimiter=- -d" " -f6` = `echo " "`;
then

else

fi

welches im pos. Fall auch funkt., falls es kein Leerzeichen ist, jedoch
eine Fehlermeldung produziert (und trotzdem zu else springt :)

Vielen Dank für Hilfe und ich hoffe, ich konnte mich als
Nichtinformatiker verstàndlich ausdrücken.

Ciao,
Thomas.

++ Thomas Bengs +++++++++++++++++++++++++ | /"\ ASCII Ribbon Campaign
++ tbengs@web.de ++++++++++++++++++++++++ | \ /
++ http://www.bengs.de ++++++++++++++++++ | x against HTML in Email
++ "Anywhere you go, you ever go away" ++ | / \ and News
 

Lesen sie die antworten

#1 Heike C. Zimmerer
21/01/2008 - 19:47 | Warnen spam
"Dr. Thomas Bengs" writes:

Ich schreibe mir für den Hausgebrauch einfache Scripte. Dabei habe ich
eine Shellfunktion, welche verschieden Sachen austestet

FUNKTION () {
if test = ...
}

und die soll dann bei der ersten Übereinstimmung eine Variable setzten
und auffhören, das eigentl. script soll dan weiterlaufen.



if test ...;then
return
fi

Also scheidet "exit" aus.



Nicht ganz, aber das ist vielleicht Erbsenzàhlerei. Du kannst eine
Funktion statt in geschweifte in runde Klammern setzen. Dann làuft
sie in einer Subshell; ein exit hat dann dieselbe Wirkung wie ein
return. So völlig unsinnig sind runde Klammern nicht, auch wenn sie
kaum bekannt sind und obwohl Subshells Zeit kosten
(seitenwirkungsfrei, was die Shell-Umgebung betrifft).

Des weiteren teste ich einen Ausdruck, ob er ein Leerzerzeichen ist. Wie
macht man dass? Ich benutze folgenden Workaround



Quoting, wie Jürgen erklàrt hat. Sobald Du die Quoting-Grundregeln
intus hast, ist ein Leerzeichen ein Zeichen wie jedes andere auch.
Mit der Ausnahme natürlich, dass es ein paar zusàtzliche Automatismen
ermöglicht, über die man aber dann nicht mehr stolpert, bloß weil man
die Anführungszeichen für überflüssig hielt.

Ähnliche fragen