From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7319 invoked by alias); 7 Feb 2002 16:21:23 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Received: (qmail 7199 invoked from network); 7 Feb 2002 16:21:22 -0000 Received: from unknown (HELO syntrex.com) (80.18.91.202) by sources.redhat.com with SMTP; 7 Feb 2002 16:21:22 -0000 Received: (qmail 26299 invoked by uid 8); 7 Feb 2002 17:22:01 -0000 Received: from 212-41-210-71.adsl.galactica.it (212.41.210.71, claiming to be "syntrex.com") by mail.syntrex.com with SMTP id smtpd6zd8vU; Thu, 07 Feb 2002 12:21:59 EST Message-ID: <3C62A977.201@syntrex.com> Date: Thu, 07 Feb 2002 08:21:00 -0000 From: Pavel Tsekov User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.4) Gecko/20011126 Netscape6/6.2.1 X-Accept-Language: en-us MIME-Version: 1.0 To: Richard Gilbert CC: cygwin@cygwin.com Subject: Re: Passing double quotes to DOS References: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-02/txt/msg00336.txt.bz2 Well, I got curious and examined the source more closely. This is a commment from spawn.cc spawn_guts function: /* Handle embedded special characters " and \. A " is always preceded by a \. A \ is not special unless it precedes a ". If it does, then all preceding \'s must be doubled to avoid having the Windows command line parser interpret the \ as quoting the ". This rule applies to a string of \'s before the end of the string, since cygwin/windows uses a " to delimit the argument. */ It explains why you get: echo "\"abc\"" Now the more interesting thing is that it looks like different types of command shell builtins will parse this in a different way :) For example: copy "\"abc\"" C:\ tries to copy all files from directory \abc\ :) echo "\"abc\"" just prints everything passed to it as is :) This leads me to the idea that cmd.exe / command.com doesn't care about quoteing but every command does it for itself :) Which is funny IMO :) Tried this on NT4 - maybe anyone else can confirm / deny this for other windowses. Btw this makes me think that the code that does all this magic to protect double quote characters is quite unnecesary since it can lead to misleading results. just my two cents. Richard Gilbert wrote: >>>I need to be able to pass double quotes to a program running under NT4/DOS >>>but I cannot find a way of doing so. To illustrate the problem I have >>>written a trivial BAT file called e.bat which contains the single line >>> >>>echo %1 >>> >>>If I run it from a DOS shell with a double quoted parameter it echoes the >>>parameter with the double quotes intact, e.g. >>> >>>C:>e.bat "abc" >>>C:>echo "abc" (<-- the BAT file echoes the command) >>>"abc" >>> >>>However, if I run this program from a bash shell (or tcsh) in the cygwin >>>environment, I cannot find a way of passing the double quotes to the >>>program... >>> >>>$ e.bat "abc" >>>C:>echo abc >>>abc >>> >>>(as expected) >>> >>>$ e.bat "\"abc\"" >>>C:>echo "\"abc\"" >>>echo "\"abc\"" >>> >>>$ e.bat '"abc"' >>>C:>echo "\"abc\"" >>>echo "\"abc\"" >>> >>I dont understand the output of the last example ? Is it really the >>same like the output of the second sample or it's just copy and >>paste mistake ? (DISCLAIMER: My understanding of shell scripts is not >>that deep so if I'm asking something very stupid here, please ignore it) >> > > It really is the same... > > >>>Note that both the last two result in the same command being passed to >>>the BAT file. >>> >>>Can anybody tell me how to do it? >>> >>Does this help: e.bat \"abc\" >> > > ...and the above suggestion has exactly the same effect: > > $ e.bat \"abc\" > C:>echo "\"abc\"" > echo "\"abc\"" > > -- > Richard Gilbert > Corporate Information and Computing Services > University of Sheffield, Sheffield, S10 2TN, UK > Phone: +44 114 222 3028 Fax: +44 114 222 3040 > > > -- > 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/ > > > > -- 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/