PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HILFE: Was ist "RETVAL"?



anathol
28-06-2004, 17:14
Hallo ...

ich habe ein Problem... ich habe mir ein Shell-Script angeschaut zum besseren verständnisses des programmierens der Shell und komme mit der RETVAL Variable nicht weiter...

(hier ein Auszug aus einem Script)
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/inet

Da RETVAL regelmäßig auftaucht, ich mir aber nicht genau erklären kann, was die für eine Funktion haben... komme ich leider nicht weiter...
(Momentan vermute ich, dass die dazu da sind, Parameter in höherligende Funktionen zu übertragen, also nicht nur über return... reine Vermutung... also vergleichbar wie Zeiger in C)

Ich bräuchte nur jemanden, der mir sagt "so und so ist das" und fertig ^^'''

dane schonmal ^^ö

TheDodger
28-06-2004, 19:16
RETVAL == returnValue

In RETVAL steht eigentlich nur der Rückgabewert des vorherigen Progammaufrufes drin.
IMHO ... korrigiert mich, wenn ich was falsche sage.

peschmae
28-06-2004, 19:55
vielleicht wars nicht ganz klar ausgedrückt (finde ich jedenfalls)
in $? steht immer der Rückgabewert des zuletzt ausgeführten Programms. Ist der 0 wurde das Programm erfolgreich ausgeführt - sonst ist er etwas anderes. Kann man z.B. bei grep verwenden: grep mit -q zum Schweigen bringen - wurde etwas gefunden ist $? gleich 0 und sonst isses was anderes.

Das Zuweisen von $? an RETVAL ist nur zum weiteren speichern des Werts - beim nächsten Programmaufruf wird $? nämlich durch den Rückgabewert des aufgerufenen Programms überschrieben.

In so einem Codestück ist das aber eher überflüssig:
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/inet
da könnte man auch
[ $? -eq 0 ] && touch /var/lock/subsys/inet
schreiben - oder noch besser (d.h. kürzer):
programm && touch /var/lock/subsys/inet
wobei programm hier das vor dem obigen RETVAL=$? zuletzt gestartete Proggi ist.

MfG Peschmä