Это, вероятно, связано с тем, как bash обрабатывает свои параметры.На самом деле, нам нужно взглянуть на исходный код bash, чтобы убедиться, что на самом деле происходит, но вы можете быть уверены, что причина этого странного поведения есть.
Я сделал этот вывод, основываясь на том, как Windows обрабатывает двойные кавычкии косые черты.Windows не обрабатывает строки так же, как Unix-подобные системы. Вскоре невозможно избежать двойных кавычек внутри строк в двойных кавычках .
Чтобы обеспечить это, создайте файл с именем test.bat в Windowsс этим содержанием:
@echo off
echo %1
И вызовите его, передав свой параметр:
C:\> test.bat "c:/cygwin/home/jonathan/camlprog \"foo\" bar"
В результате вы получите:
"c:/cygwin/home/jonathan/camlprog \"foo\" bar"
Что означает косые черты и вседругие символы передаются в сценарий.Итак, в вашем случае они передаются в bash, который обрабатывает эти символы для вас, и делает это каким-то непоследовательным образом.
Итак, чтобы обойти вашу проблему, вы можете вызвать командуway:
c:\> c:\cygwin\bin\bash -c 'c:/cygwin/home/jonathan/camlprog "foo" bar'
foo
bar
Используя одинарные кавычки сначала, а потом двойные кавычки, скрипт camlprog
, кажется, работает как ожидалось.