[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bash: Fehler auch über Pipes hinweg abfangen



Hallo mitnander,

ich baue gerade ein Bash-Skript, in dem ich Fehler von im Skript
aufgerufenen Kommandos abfangen möchte. Aktuell habe ich das mit trap
global realisiert (also ohne jeden einzelnen Rückgabewert individuell zu
prüfen).

< Errorhandling im Bash-Skript >

function trap_error {
    echo "Error: Subcommand returned non-zero return value: $?"
    exit 1
}

trap trap_error ERR

< /Errorhandling >

Das funktioniert auch schön für alleinstehende Kommandos

$ tail -2 trap.sh
./kommando_gibts_net 
echo "foo"

$ ./trap.sh
./trap.sh: line 10: ./kommando_gibts_net: No such file or directory
Subcommand returned non zero status: 127

Der Fehler wird abgefangen und das Skript nicht weiter ausgeführt,
soweit so gut. Sobald ich jedoch ein aufzurufendes Kommando in eine Pipe
packe, klappt das schon nicht mehr. Der Fehler wird nicht mehr
abgefangen.

$ tail -2 trap.sh
./kommando_gibts_net | cat
echo "foo"

$ ./trap.sh
./trap.sh: line 10: ./kommando_gibts_net: No such file or directory
foo

Gibt es eine Möglichkeit Fehler von aufgerufenen Kommandos trotz der
Verwendung von Pipes mittels trap oder etwas Ähnlichem abzufangen?

- sebastian



Reply to: