Date: Sun, 26 Nov 2006 10:41:48 +0000 From: Robin Becker <robin@reportlab.com> To: Matthew Seaman <m.seaman@infracaninophile.co.uk> Cc: FreeBSD-Questions <freebsd-questions@freebsd.org> Subject: Re: shell test for stdout=stderr Message-ID: <45696F6C.2060300@jessikat.plus.net> In-Reply-To: <4569555A.8010904@infracaninophile.co.uk> References: <4568CF28.5050407@jessikat.plus.net> <4569555A.8010904@infracaninophile.co.uk>
next in thread | previous in thread | raw e-mail | index | archive | help
Matthew Seaman wrote: > Robin Becker wrote: >> Is there a way for a shell script to test if 2> is the same as 1>? I >> want to put messages in both when they are connected to different files, >> but would like to avoid duplicating the message when they are the same. > > You could try using fstat(1) to print out the open file descriptors from > your process: > > fstat -p $$ > > and then compare the values in the DEV and INUM columns -- unfortunately > fstat has no way to map back from those device and inode values to > filenames. thanks for the fstat tip this code seems to do what I want fstat -p $$ | awk '{if($4=="1"||$4=="2"){F[$4]=$5+$6+$8}} END{ if(F["1"]==F["2"]) print 1 }' I suppose there might be a problem if F never gets created or one of 1/2 were closed prior to execution. I probably need a BEGIN{F[""]=""} or something to make it a bit more robust. -- Robin Becker
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45696F6C.2060300>