次のダミーの Windows バッチ スクリプトを検討してください。
echo %1
最初の引数を端末にエコーするだけだと思われます。
それぞれのパスを想定します。Windows、Cygwin スタイルは次のとおりです。
c:\test\win.bat
/cygdrive/c/test/win.bat
Cygwin bash から:
$ c:\test\win.bat "hello world"
"hello world"
したがって、引用符は単一の引数を正しく識別します。
しかし、ここでパスにスペースを導入しましょう:
"c:\te st\win.bat"
/cygdrive/c/te\ st/win.bat
それで:
$ /cygdrive/c/te\ st/win.bat "hello world"
与えます:
"C:\te" is not recognized as an internal or external command, operable program or batch file.
同じことが次の場合にも起こります。
$ "/cygdrive/c/te st/win.bat" "hello world"
次の点に注意してください。
$ /cygdrive/c/te\ st/win.bat "hello"
hello
これはunquotedhello
に渡されるようになりました (どちらかで)。win.bat
"/cygdrive/c/te st/win.bat" "hello"
パスと引数の両方にスペースを入れるにはどうすればよいですか?