Igor Pechtchanski wrote:
On Fri, 3 Sep 2004, Mark Bohlman wrote:
Igor Pechtchanski wrote:
On Fri, 3 Sep 2004, Mark Bohlman wrote:
Igor Pechtchanski wrote:
On Fri, 3 Sep 2004, Christopher Cobb wrote:
I get different results than you do. It seems to work as expected:
[EMAIL PROTECTED] /c/Documents and Settings 09:45:46 511$ cat test.bat echo %1
[EMAIL PROTECTED] /c/Documents and Settings 09:45:48 511$ ./test.bat
C:\Documents and Settings>echo ECHO is on.
I believe you're missing the point. Try
../test.bat "hello world"
and you'll get the error.
I've come across this when writing a pure Windows loader for another program. The above is actually an idiosyncrasy of the way spawn() works in Cygwin (and, incidentally, in Windows' own MSVCRT) -- it calls CreateProcess, which expects all arguments combined into one command string (which, in turn, is later parsed for separate arguments - yes, retarded, I know). The fact is that, if any argument contains spaces, it has to be quoted before CreateProcess() is invoked. Cygwin apparently doesn't do this properly to the first argument, so the above breaks. See spawn_guts() in winsup/cygwin/spawn.cc (warning: a 590!-line function). <http://cygwin.com/acronyms/#PTC>. Igor
You get the same "odd evaluation behavior" when doing echo "Hello World" | ./test.bat (in any directory). -- Mark
Actually, I don't. Did you, by chance, mean "echo ...|xargs ./test.bat"? Even so, you should probably be a bit more specific about the "odd evaluation behavior" that you're observing. Igor
Hmmm. I'm seeing the same results as you show above with a quoted "Hello World" parameter to the ./test.bat.
Then in doing the echo, without the xargs, results in the same "non-evaluation" (what i consider to be 'odd') for parameter %1 within the test.bat file. -- Mark
Well, piping the output of echo to test.bat's stdin is *not* the same as passing the string as a parameter. In the former case, test.bat is called with no arguments, so %1 evaluates to nothing. IOW, the behavior you're seeing is expected. Igor
Of course you are right on the stdin side. My mistake.
And I think it's time i move back to Unix systems exclusively as the behavior is "as expected" (used loosely) under cmd.exe.
-- Mark
-- 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/