Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-Id: <5.0.2.1.2.20010302121935.03407ea8@ks.teknowledge.com> X-Sender: rschulz AT ks DOT teknowledge DOT com X-Mailer: QUALCOMM Windows Eudora Version 5.0.2 Date: Fri, 02 Mar 2001 12:25:36 -0800 To: "Eric M. Monsler" , "cygwin AT cygwin DOT com" From: Randall R Schulz Subject: Re: Defining an 'rgrep' function In-Reply-To: <3A9FEDF6.FF320851@beamreachnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed Eric, The problem is not the backslash escaping the semicolon, it's the fact that the body of a BASH function must end either with a newline or a semicolon. Your removing the backslash allowed BASH to see it and properly parse the function definition. However, this effectively "stole" it from find, which then became the complainant. So, you want this: rgrep () { find . -name "*.[ch]" -type f -exec egrep -n "$1" {} /dev/null \; ; } RandyS At 11:01 3/2/2001, Eric M. Monsler wrote: >Hi, > >I am trying to define a recursive grep function, rgrep. > >On Solaris, I use: > >function rgrep { find . -name "*.[ch]" -type f -exec egrep -n "$1" {} >/dev/null \; } > >Under cygwin, that is not parsed correctly. I suspected that it was due >to the "\" character, so I tried: > >function rgrep { find . -name "*.[ch]" -type f -exec egrep -n "$1" {} >/dev/null ; } > >The above seemed to be parsed correctly, but doing "rgrep foo" returned >the error message: > >find: missing argument to `-exec` > > >So, there are two questions that come to mind: > >1) How do I modify the function definition in bash/cygwin, so that "\;" >is interpreted as it is on Solaris? > >2) Does anyone have a working rgrep function I an just steal, and remain >ignorant? :) > > >Eric M. Monsler -- Want to unsubscribe from this list? Check out: http://cygwin.com/ml/#unsubscribe-simple