$? - pruefen ob der befehl erfolgreich war

24/04/2008 - 12:15 von Tobias Andru | Report spam
hallo

ich will das jeder befehl geprueft wird, ob er erfolgreich abgeschlossen
hat.

dazu verwende ich die variable $?

ich schaffe es nicht den inhalt der variable $? in eine andere variable zu
schreiben.

versuch:
ls /tmp | TMP=$?
echo $TMP

dann ist die variable TMP leer


mein ziel: ( bin bash-newby evt. gibt es auch eine bessere loesung! )

function CONTROLLE {
if test $TMP -eq 0
then echo "ok"
else echo "fehler: $FEHLERCODE"
fi
}

ls /tmp | TMP=$? | FEHLERCODE)90 | CONTROLLE


danke
 

Lesen sie die antworten

#1 Juergen P. Meier
24/04/2008 - 12:14 | Warnen spam
Tobias Andru :
ich schaffe es nicht den inhalt der variable $? in eine andere variable zu
schreiben.

versuch:
ls /tmp | TMP=$?
echo $TMP



richtig:

ls /tmp
TMP=$?

oder auch:

ls /tmp ; TMP=$?

dann ist die variable TMP leer



Ja, weil die evaluation des Zugriffs vor ausfuehrung von ls
stattfindet.

mein ziel: ( bin bash-newby evt. gibt es auch eine bessere loesung! )

function CONTROLLE {
if test $TMP -eq 0
then echo "ok"
else echo "fehler: $FEHLERCODE"
fi
}

ls /tmp | TMP=$? | FEHLERCODE)90 | CONTROLLE



Das funktioniert nicht, weil /innerhalb/ einer Pipe die Kommandos
parallel laufen.
Den Exit-status kannst du aber erst abfragen, nachdem das Programm
beendet wurde, und daas geht in einer pipe nicht.

Du koenntest schreiben:

ls /tmp ; CONTROLLE

Juergen
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)

Ähnliche fragen