Subject: Re: bashism for ksh
To: Thorsten Glaser <tg@mirbsd.de>
From: Aleksey Cheusov <cheusov@tut.by>
List: tech-userlevel
Date: 09/27/2007 00:00:07
> Aleksey Cheusov dixit:
>>If you'll add PIPESTATUS (bash/zsh) extension to mksh, it become
>>really great ;) IMHO PIPESTATUS is extreamly useful for interactive usage.
> What does it?
My prompt (bash) works like this
0 ~>ret5 () { return 5; }
0 ~>ret7 () { return 7; }
0 ~>ret5
5 ~>ret7
7 ~>ret5 | true | ret5
5 0 5 ~>true | false | ret7
0 1 7 ~>false | false
1 1 ~>
Before ~> exit statuses of every program in pipe are shown.
That is, when I run pipe I see how it ended.
In bash this is done via special array (yet another extension) variable
PIPESTATUS.
I know that there is a way of portable implementation
of the same functionality but this requires running a pipe
in a special way like this
runpipe ret 5 '|' true '|' ret5
where runpipe is a special wrapper.
This way is excellent for portable programs but
is too hard for the interactive use.
P.S.
Based on the code from FAQ of comp.unix.shell, I wrote this wrapper
and new helper functions and packaged them.
http://mova.org/~cheusov/pub/pipestatus/
Detailed (but short) documentation is in README file inside tarball.
--
Best regards, Aleksey Cheusov.