* 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).