On Wed, Sep 09, 2009 at 12:10:44PM -0400, Mark J. Reed wrote: >On Wed, Sep 9, 2009 at 12:05 PM, Christopher Faylor wrote: >>>>>> $ cmd /c echo "\"abc\"" >>>>>> "\"abc\"" >>>>>> >>>>>> # Wahhh?! >>>>>> >>>>>> Anyone who knows the explanation would make me very grateful. I've tried >>>>>> this with other Windows apps too, and the same weirdness seems to occur. >>> >>>Larry Hall: >>>>>All of the above is consistent with bash shell quoting. >>> >>>No, it's really not. ??Those backslashes should be long gone by the >>>time cmd.exe gets its arguments, yet it echoes them. ??It seems that >>>the Cygwin version of bash stops short before doing some of the work >>>it normally does itself on other systems, assuming the executed >>>command will have its command line run through the preprocessor in the >>>Cygwin DLL. >> >> Actually, I'd say that was cmd doing something funky. ??It's hard to believe >> that bash was actually special-casing cmd.exe. > >I don't think it's special-casing cmd.exe. I think some of the >command line processing that is done by bash on Linux has been moved >out of bash and into the DLL command line preprocessor on Cygwin.
Cygwin does quote individual arguments if they contain "special" characters like quotes or spaces when sending a command-line to a windows program. It's up to the windows program to understand quoting. I tried renaming cmd.exe to foo.exe and there is no difference in behavior but a mingw program which just echoes arguments does the right thing. So, the bottom line is that you can't rely on quoting behavior with cmd's built-in echo. cgf -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple