zsh-users
 help / color / mirror / code / Atom feed
* Saving error return code in a pipeline
@ 2005-06-30  9:33 DervishD
  2005-06-30  9:36 ` Dominic Mitchell
  2005-06-30 12:00 ` Stephane Chazelas
  0 siblings, 2 replies; 5+ messages in thread
From: DervishD @ 2005-06-30  9:33 UTC (permalink / raw)
  To: Zsh Users

    Hi all :)

    Maybe I'm asking for something impossible, or maybe I'm just dumb
enough to not see the obvious solution...

    I have a script which returns an error code, but it outputs a lot
of info, so I call it like this:

    script.install |& tee install.log

    Obviously this 'masks' the return code, but I want to see the
output even though I'm saving it to a file, so a redirection doesn't
fit me well. I can use MULTIOS, of course, but I don't want to use it
for all my commands...

    Is there any better solution than this?:

    script.install >(tee install.log) 2>&1

    Thanks a lot in advance :))

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Saving error return code in a pipeline
  2005-06-30  9:33 Saving error return code in a pipeline DervishD
@ 2005-06-30  9:36 ` Dominic Mitchell
  2005-06-30 13:29   ` DervishD
  2005-06-30 12:00 ` Stephane Chazelas
  1 sibling, 1 reply; 5+ messages in thread
From: Dominic Mitchell @ 2005-06-30  9:36 UTC (permalink / raw)
  To: Zsh Users

On Thu, Jun 30, 2005 at 11:33:07AM +0200, DervishD wrote:
>     Hi all :)
> 
>     Maybe I'm asking for something impossible, or maybe I'm just dumb
> enough to not see the obvious solution...
> 
>     I have a script which returns an error code, but it outputs a lot
> of info, so I call it like this:
> 
>     script.install |& tee install.log
> 
>     Obviously this 'masks' the return code, but I want to see the
> output even though I'm saving it to a file, so a redirection doesn't
> fit me well. I can use MULTIOS, of course, but I don't want to use it
> for all my commands...
> 
>     Is there any better solution than this?:
> 
>     script.install >(tee install.log) 2>&1

Try looking at the pipestatus array.  It contains all the exit codes
from the last pipeline.  So you should be able to get the code you want
by examining $pipestatus[1].

-Dom


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Saving error return code in a pipeline
  2005-06-30  9:33 Saving error return code in a pipeline DervishD
  2005-06-30  9:36 ` Dominic Mitchell
@ 2005-06-30 12:00 ` Stephane Chazelas
  2005-06-30 13:30   ` DervishD
  1 sibling, 1 reply; 5+ messages in thread
From: Stephane Chazelas @ 2005-06-30 12:00 UTC (permalink / raw)
  To: Zsh Users

On Thu, Jun 30, 2005 at 11:33:07AM +0200, DervishD wrote:
>     Hi all :)
> 
>     Maybe I'm asking for something impossible, or maybe I'm just dumb
> enough to not see the obvious solution...
> 
>     I have a script which returns an error code, but it outputs a lot
> of info, so I call it like this:
> 
>     script.install |& tee install.log
> 
>     Obviously this 'masks' the return code, but I want to see the
> output even though I'm saving it to a file, so a redirection doesn't
> fit me well. I can use MULTIOS, of course, but I don't want to use it
> for all my commands...
> 
>     Is there any better solution than this?:
> 
>     script.install >(tee install.log) 2>&1
[...]

zsh has what it calls mult_ios (mult_ios option which is on by
default) that performs a tee internally when a fd is redirected
several times.

script.install >&1 > install.log 2>&1

Once zsh sees > install.log, it realises that it's the second
time fd 1 is being redirected, so it creates a pipe and a
background process that reads from that pipe and writes what
it's reading both to your terminal and install.log, then
redirects stdout to it. Then 2>&1 redirects stderr as well to
that pipe.


But you can also do:

script.install |& tee install.log
script_exit_status=$pipestatus[1]

-- 
Stephane


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Saving error return code in a pipeline
  2005-06-30  9:36 ` Dominic Mitchell
@ 2005-06-30 13:29   ` DervishD
  0 siblings, 0 replies; 5+ messages in thread
From: DervishD @ 2005-06-30 13:29 UTC (permalink / raw)
  To: Dominic Mitchell; +Cc: Zsh Users

    Hi Dominic :)

 * Dominic Mitchell <dom@happygiraffe.net> dixit:
> On Thu, Jun 30, 2005 at 11:33:07AM +0200, DervishD wrote:
> >     Is there any better solution than this?:
> >     script.install >(tee install.log) 2>&1
> Try looking at the pipestatus array.  It contains all the exit codes
> from the last pipeline.  So you should be able to get the code you want
> by examining $pipestatus[1].

    I completely forgot about pipestatus, and the worst part is that
I already use pipestatus in one of my scripts... Oh, my.

    Thanks a lot :)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Saving error return code in a pipeline
  2005-06-30 12:00 ` Stephane Chazelas
@ 2005-06-30 13:30   ` DervishD
  0 siblings, 0 replies; 5+ messages in thread
From: DervishD @ 2005-06-30 13:30 UTC (permalink / raw)
  To: Zsh Users

    Hi Stephane :)

 * Stephane Chazelas <Stephane@artesyncp.com> dixit:
> > I can use MULTIOS, of course, but I don't want to use it
> > for all my commands...
> > 
> >     Is there any better solution than this?:
> > 
> >     script.install >(tee install.log) 2>&1
> [...]
> zsh has what it calls mult_ios (mult_ios option which is on by
> default) that performs a tee internally when a fd is redirected
> several times.

    Look the paragraph above ;)

> But you can also do:
> script.install |& tee install.log
> script_exit_status=$pipestatus[1]

    Better solution for the script, thanks :)

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-06-30 13:28 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-06-30  9:33 Saving error return code in a pipeline DervishD
2005-06-30  9:36 ` Dominic Mitchell
2005-06-30 13:29   ` DervishD
2005-06-30 12:00 ` Stephane Chazelas
2005-06-30 13:30   ` DervishD

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).