Windows cygwin bash正斜杠转换为反斜杠

Windows cygwin bash正斜杠转换为反斜杠,windows,bash,cygwin,filenames,slash,Windows,Bash,Cygwin,Filenames,Slash,我们无法计算出这一点,也无法创建一个可以复制这一点的样本 我正在尝试使用外部sh文件来调用hadoop sh文件 myfile.sh # workingdir = /data1/some/path/lib WORKINGDIR=`cygpath -p -w -m "$WORKINGDIR"` # so the above in windows land is C:/some/path/lib # HADOOPCMD essentially is a call to hadoop.sh $HADO

我们无法计算出这一点,也无法创建一个可以复制这一点的样本

我正在尝试使用外部sh文件来调用hadoop sh文件

myfile.sh

# workingdir = /data1/some/path/lib
WORKINGDIR=`cygpath -p -w -m "$WORKINGDIR"`
# so the above in windows land is C:/some/path/lib
# HADOOPCMD essentially is a call to hadoop.sh
$HADOOPCMD jar $WORKINGDIR/myjar.jar
hadoop.sh

echo "$@" // still C:/some/path/lib
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS $CLASS "$@"
然而,当“$@”在cygwin中展开时,结果路径变成C:\some\path\lib,然后hadoop.sh抱怨它找不到jar。。。不是有效的JAR:C:\some\path\lib

但是,如果我在myfile.sh中硬编码路径;它起作用了

$HADOOPCMD jar C:/some/path/lib/myjar.jar
问题:

  • 为什么exec命令的“$@”会将WORKINGDIR变量中的/to\更改为
  • 为什么硬编码路径有效
  • 如何使它与可变取代基一起工作

  • 引用变量的作用是:“$WORKINGDIR”/myjar.jar

    hmm。。我想我是通过引用$WORKINGDIR来实现的,所以命令是$HADOOPCMD jar“$WORKINGDIR”/myjar.jar一般的经验法则是“始终引用变量扩展”。