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