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

Re: Bash: Fehler auch über Pipes hinweg abfangen



Hallo,

On Mon, Nov 21, 2005 at 01:57:48PM +0100, Sebastian Kayser wrote:
> Gibt es eine Möglichkeit Fehler von aufgerufenen Kommandos trotz der
> Verwendung von Pipes mittels trap oder etwas Ähnlichem abzufangen?

Bash hält die Rückgabewerte jedes Kommandos einer Pipe im Array
PIPESTATUS. Dummerweise wird auch ein einzelnes Kommando als Pipe
gesehen, weshalb es mit schwierig wird, die Fehler mit trap abzufangen.
Ein zugegebenermaßen klobiger Würgaround wäre, PIPESTATUS mittels einer
Funktion nach jeder Pipe im Skript prüfen zu lassen:

---8<---

#! /bin/bash
function check_pipe_status() {
    for i in  "${PIPESTATUS[@]}"; do
         [ $i -gt 0 ] && {
            echo "An element in the pipe returned $i, bailing out"
            exit $i
        }
    done
}

echo "1st pipe" | cat
check_pipe_status
echo "=== after 1st pipe ==="

echo "For the shell, I'm a pipe as well :-("
check_pipe_status
echo "=== after 2nd pipe ==="

true | false | cat
check_pipe_status
echo "=== after 3nd pipe ==="   # wird nicht erreicht

--->8---

Vielleicht hilfts Dir ja weiter.

> - sebastian

Gruß,

f
-- 
Gravity is a myth, the Earth sucks.



Reply to: