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 [email protected]
32052 Herford USt-IdNr DE237314606
--
Linux mailing list [email protected]
subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux
Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo