Path 如何在cygwin中的windows下调用bash中的java.exe,路径中有空格

Path 如何在cygwin中的windows下调用bash中的java.exe,路径中有空格,path,cygwin,space,Path,Cygwin,Space,我尝试使用cygwin在windows(Win XP)上调用bash脚本中的java。 但是,java.exe的路径包含空格 只有在bash中加入这样的文字才能起作用: /cygdrive/c/Program\ Files/Java/jdk1.5.0_10/bin/java -cp "$TOOL_HOME" DateParse "$DATE" "$FORMAT" 将java路径放入变量的尝试失败: export JAVA_EXE="/cygdrive/c/Program\ Files/Jav

我尝试使用cygwin在windows(Win XP)上调用bash脚本中的java。 但是,java.exe的路径包含空格

只有在bash中加入这样的文字才能起作用:

/cygdrive/c/Program\ Files/Java/jdk1.5.0_10/bin/java -cp "$TOOL_HOME" DateParse  "$DATE" "$FORMAT"
将java路径放入变量的尝试失败:

export JAVA_EXE="/cygdrive/c/Program\ Files/Java/jdk1.5.0_10/bin/java"
$JAVA_EXE -cp "$TOOL_HOME" DateParse  "$DATE" "$FORMAT"

另外,与cygpath、引号、括号的不同组合也不起作用。我找不到正确的组合

$JAVA_EXE
周围加引号:

"$JAVA_EXE" -cp "$TOOL_HOME" DateParse  "$DATE" "$FORMAT"
问题是,每次展开变量时,它也会在空格处分解为单词,除非在其周围加引号。所以如果你不想让东西在空格处断裂,你需要引号

另一种选择是总是使用不允许空格的短(DOS)名称。要查看短名称是什么,请运行

cygpath -d "$JAVA_EXE"
要将其转换回类似unix的cygwin路径,请使用

cygpath -u $(cygpath -d "$JAVA_EXE")

谢谢你的想法。它以适当的组合工作。问题是,我正在转义空格字符,同时将JAVA_EXE放在引号中

export JAVA_EXE="/cygdrive/c/Program Files/Java/jdk1.5.0_10/bin/java"
"$JAVA_EXE" -cp "$TOOL_HOME" DateParse  "$DATE" "$FORMAT"
产生这种效果:

line 30: /cygdrive/c/Program\ Files/Java/jdk1.5.0_10/bin/java: No such file or directory
另一方面,转换到DOS 8.3也不起作用:

cannot create short name of \\?\C:\Program\ Files\Java\jdk1.5.0_10
\bin\java

最后,将JAVA_EXE放在引号中,但不在路径中转义空格对我来说效果很好:

export JAVA_EXE="/cygdrive/c/Program Files/Java/jdk1.5.0_10/bin/java"

"$JAVA_EXE" -cp "$TOOL_HOME" DateParse  "$DATE" "$FORMAT"

您是否尝试过:export JAVA_EXE=“/cygdrive/c/Program Files/JAVA/jdk1.5.0_10/bin/JAVA”?问题可能是在将其设置为引号内的变量时转义了该空格。不确定这是否有效,但您是否尝试过使用DOS 8.3 shortname?i、 e.Progra~1而不是“程序\文件”。