Mail Archives: cygwin/2002/12/20/18:08:20
Sören,
If you wrote all that yourself, I can't say you look like a BASH newbie.
Then again, there's that "too clever by half" thing...
As an aside, I find "export NAME=value" to be clearer than "declare -x
NAME=value", but that's just opinion.
As to your problem, first of all, you're only capturing the exit code when
the make fails. Replace the "||" with a semicolon and ECODE will never be
empty.
Secondly, you're using an odd way to test $ECODE. I usually use something
like this:
if [ "$ECODE" -eq 0 ]; then
echo Safe and sound.
else
echo Uh-Oh!
fi
This has the added advantage of being portable to simpler shells like
Bourne and Ash. I'm not sure about the expression facilities represented by
use of the double-square-bracket notation.
Randall Schulz
P.S. No one's going to come after you if you utter the word Unix.
Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix Unix
See?
Hey! Wait!! Stop that!!! You can't take my computer.
HEY! I paid for that software.
HEY!!! I WROTE that software!!
STOP. NOOOOOOOOOOOOOOOOO!!
At 13:47 2002-12-20, Soren A wrote:
>Hallo Cygwains,
>
>[Heck, I dunno... "Cygwinauts"?].
>
>I have a possibly OT question, that is, a bash shell question. Lacking
>the insight into the deepest reaches of shell-ology, I have come up
>empty on all attempts to solve this one for myself. (Those attempts have
>included doing `info bash' and reading the "Advanced Bash Scripting
>Guide", an excellent resource available on the Web).
>
>I am writing a shell script that chains together several commands in a
>pipeline -- very *nix-ish. The first command in the pipeline is an
>invocation of `make'. Here's the entire script code -- I've tried many
>very elaborate or bizarre things, before this:
>----------------------------------8<-----------------------------------
> function powermake
> {
> declare -x LESS='-z-2$ -s~wR'
> declare PAGER='/bin/less'
> declare +x ECODE=
> { make "$@" || ECODE=$? ; } 2>&1 | tee $MAKE_ERR_TO | \
> /cdv/f/scr/colormake.pl | $PAGER -O"${MAKE_ERR_TO}.colorlog"
> if [[ $ECODE ]] # "0" and "1" are both TRUE; "null" is FALSE.
> then $gvimexe --servername 'QUICKFIX' -q "$(cygpath -wla
> $MAKE_ERR_TO)"
> else echo 'No "make" errors to diagnose: retval was ' '"'$ECODE'".'
> fi
> return $ECODE
> }
>----------------------------------8<-----------------------------------
>
>The problem I am trying to solve is how to get the return value of the
>`make' tool. If there was an error I need to know about it. But as it
>stands, nothing that i have tried will cause me to see the VIM editor
>session start up; the value in ECODE is apparently always "0".
>
>Does anyone know how to do this -- how to pull out a return value from a
>command in the middle of a pipeline?
>
> Thanks,
> Soren
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -