delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/06/19/10:50:25

X-Spam-Check-By: sourceware.org
Date: Mon, 19 Jun 2006 10:50:02 -0400 (EDT)
From: Igor Peshansky <pechtcha AT cs DOT nyu DOT edu>
Reply-To: cygwin AT cygwin DOT com
To: ydubost <yann DOT dubost AT capgemini DOT com>
cc: cygwin AT cygwin DOT com
Subject: RE: Pb with bash script under cygwin
In-Reply-To: <4935913.post@talk.nabble.com>
Message-ID: <Pine.GSO.4.63.0606191033510.11100@access1.cims.nyu.edu>
References: <4934908 DOT post AT talk DOT nabble DOT com> <002901c69399$67131120$a501a8c0 AT CAM DOT ARTIMI DOT COM> <4935913 DOT post AT talk DOT nabble DOT com>
MIME-Version: 1.0
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/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

On Mon, 19 Jun 2006, ydubost wrote:

> Thanks Dave for your answer.
> I tried
>       ${Macommande}
> and
>       $(${MaCommande})
> and directly
>       find . ${Extension} -exec rm {} \; -print
>
> but none of them worked, I then tried just a
>       find . -name *._cn" -print  that should have sent me back some results but did not!
                     ^
You seem to be missing an opening quote here...

> So thanks to you idea of executing bash -x, I looked at what's happening and
> the result is that the command executed is :
>       find . -name '"*._SN"' -o -name '"*._sn"' -o -name '"*._lg"' -o -name
> '"*.LG"' -exec rm '{}' '\;' -print
>
> For a unknown reason cygwin bash when it executes my script put some
> simple quotes ' around my double quotes " and put some single quotes
> around {} and around \;

That's just bash's way of telling you what exact arguments it's giving to
the program -- it puts each of them in single quotes for display purposes
only.  This also shows you that your double quotes get passed in as part
of each argument -- not surprising, as you want bash to interpret the
quotes, not use them literally.

You have two choices at this point.  The double quotes and the '\' are
only needed to prevent the shell from expanding the '*'s and the ';'.
However, the shell will not try to expand a '*' or a ';' that itself
results from variable expansion.  So, you can omit the double quotes and
the backslash.  Alternatively, you can use 'eval "${MaCommande}"' to make
the shell see the quoting.

Another note I wanted to make is that '-exec' is evil, and you almost
never have a reason to use it for a final action of the find (pipe the
output to xargs instead -- "man xargs" for details).
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_	    pechtcha AT cs DOT nyu DOT edu | igor AT watson DOT ibm DOT com
ZZZzz /,`.-'`'    -.  ;-;;,_		Igor Peshansky, Ph.D. (name changed!)
     |,4-  ) )-,_. ,\ (  `'-'		old name: Igor Pechtchanski
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Las! je suis sot... -Mais non, tu ne l'es pas, puisque tu t'en rends compte."
"But no -- you are no fool; you call yourself a fool, there's proof enough in
that!" -- Rostand, "Cyrano de Bergerac"

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.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