Bash, tee und $?: Der korrekte Umgang mit $?

Beim Ausführen von Unix-Scripten muss man oft auf den Rückgabecode $? von Anwendungen reagieren. Also fragt man diesen mit if ab.

Oft benötigt man dann noch ein Log von der Ausgabe des Kommandos. Also wird die Ausgabe umgelenkt in eine Datei. Möchte man diese Ausgabe dann auch noch sofort sehen, verwendet man den Befehl tee.

Und genau hier beginnt nun das Problem:

Wenn man mit $? den Returncode abfragt, erhält man nicht den Returncode des ausgeführten Programmes sondern den Returncode von tee!

Lösung:

Setzen der pipefail-Option im jeweiligen Shell-Skript

set -o pipefail

bevor die gewünschte Anwendung gestartet wird.

Quelle: Stackoverflow

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.