www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/12/20/18:08:20

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-Id: <5.2.0.9.2.20021220141745.0292f158@pop3.cris.com>
X-Sender: rrschulz AT pop3 DOT cris DOT com
Date: Fri, 20 Dec 2002 14:38:02 -0800
To: cygwin AT cygwin DOT com
From: Randall R Schulz <rrschulz AT cris DOT com>
Subject: Re: retval of pipelined cmd in bash
In-Reply-To: <Xns92EAAAF9FCFDBsorenagmaneSH@80.91.224.249>
Mime-Version: 1.0
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id gBKN8J620489

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 -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019