Ergebnis-Kode einer Pipe abfragen

Jan-Benedict Glaw jbglaw at lug-owl.de
Thu Aug 11 11:34:30 CEST 2005


On Thu, 2005-08-11 11:10:15 +0200, Christian Weddeling <weddeling at arcor.de> wrote:
> Hallo,
> 
> ich möchte in einem Shell-Skript den Ergebnis-Kode einer Pipe abfragen. 
> Sobald einer der beiden Befehle Probleme macht, will eine Meldung 
> ausgeben beziehungsweise dem Benutzer ein Auswahlmenü anzeigen.
> 
> Beispiel:
> 
> Quelle | Ziel

Das geht so ohne weiteres nicht; bei verketteten Befehlen (wie diesem)
ist die exit value (in $?) gleich derjenigen der letzten ausgefuehrten
Komponente. Ergo wenn "Ziel" meint, erfolgreich gewesen zu sein, wird
Erfolg gemeldet.

In der groessten Not kann man drumherum arbeiten:

---------------------------------------------
TEMPFILE1="`tempfile`"
TEMPFILE2="`tempfile`"

( Quelle || echo Mist > "${TEMPFILE1}"; ) | ( Ziel || echo Mist > "${TEMPFILE2}"; )

if [ ! -z "${TEMPFILE1}" -o ! -z "${TEMPFILE2}" ]; then
	RET=1
else
	RET=0
fi
rm -f -- "${TEMPFILE1}" "${TEMPFILE2}"
----------------------------------------------

...und dann statt, wie gewohnt, $? auszuwerten, nimmst Du ${RET}.

MfG, JBG

-- 
Jan-Benedict Glaw       jbglaw at lug-owl.de    . +49-172-7608481             _ O _
"Eine Freie Meinung in  einem Freien Kopf    | Gegen Zensur | Gegen Krieg  _ _ O
 fuer einen Freien Staat voll Freier Bürger" | im Internet! |   im Irak!   O O O
ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20050811/b96e6d89/attachment.sig>


More information about the Linux mailing list