cygwin bash正斜线转换为反斜杠

时间:2016-04-15 19:33:33

标签: 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
$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

问题

  1. 为什么exec命令" $ @"在WORKINGDIR变量中更改/到\?
  2. 为什么硬编码路径有效?
  3. 如何使用变量替换它?

1 个答案:

答案 0 :(得分:0)

引用变量有效"$WORKINGDIR"/myjar.jar