Meldung bei stderr Ausgabe?

Frank Bergmann tx-7-12 at tuxad.com
Wed Aug 24 21:40:55 CEST 2011


Hi Pierre,

On Wed, Aug 24, 2011 at 12:32:09AM +0200, Pierre Bernhardt wrote:
> aus, kommen aber mit einem exit 0 zurück (manchmal aber auch > 0). Nun benötige ich am
> besten per Pipe-Verbindung ein kleines Tool, was auf den stderr hört und sich dann mit einem
> exitcode >0 beendet, wenn auf stderr etwas durch rauscht. Prinzipiell, sobald es etwas findet,
> braucht es gar nicht mehr weiter am stderr hören und muss nur noch auf das Ende warten, damit
> es seinen Exitcode los wird.
> Das alles soll ohne temporäre Dateien ablaufen und der stdout und stderr müssen ca. 1:1 hinten
> wieder raus kommen.

hilft Dir das weiter?

treferpol:~$ exec 3<&1
treferpol:~$ { { echo stdout; echo stderr >&2; echo stdout2; } 2>&1 >&3|tee /dev/stderr|{ while read f;do g=$g$f;done;[ "$g" ] && exit 1; exit 0; } ;echo ${PIPESTATUS[*]}; } 3>&1
stdout
stdout2
stderr
0 0 1
treferpol:~$ { { echo stdout; echo stdout2; } 2>&1 >&3|tee /dev/stderr|{ while read f;do g=$g$f;done;[ "$g" ] && exit 1; exit 0; } ;echo ${PIPESTATUS[*]}; } 3>&1
stdout
stdout2
0 0 0

Der PIPESTATUS ist "0 0 1" wenn auf stderr etwas ausgegeben wird.

Die Stroeme:

treferpol:~$ { { { echo stdout; echo stderr >&2; echo stdout2; } 2>&1 >&3|tee /dev/stderr|{ while read f;do g=$g$f;done;[ "$g" ] && exit 1; exit 0; } ;echo ${PIPESTATUS[*]}; } 3>&1; } >/dev/null
stderr
treferpol:~$ { { { echo stdout; echo stderr >&2; echo stdout2; } 2>&1 >&3|tee /dev/stderr|{ while read f;do g=$g$f;done;[ "$g" ] && exit 1; exit 0; } ;echo ${PIPESTATUS[*]}; } 3>&1; } 2>/dev/null
stdout
stdout2
0 0 1

Die bleiben dabei unveraendert. Reicht Dir das fuer ein Script?

Frank

-- 
EDV Frank Bergmann                           Tel.     05221-9249753
LPIC-3 Linux Professional                    Fax      05221-9249754
Elverdisser Str. 25                          email    iservice at tuxad.com
32052 Herford                                USt-IdNr DE237314606



More information about the Linux mailing list