cygwin bash 正斜杠转换为反斜杠
cygwin bash forward slash converted to backslash
无法想象这个我们的或创建一个可以重现这个的样本。
我正在尝试使用外部 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 变量中的 / 更改为 \?
- 为什么硬编码路径有效?
- 如何让它与变量替换一起工作?
引用变量有效 "$WORKINGDIR"/myjar.jar
无法想象这个我们的或创建一个可以重现这个的样本。
我正在尝试使用外部 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 变量中的 / 更改为 \?
- 为什么硬编码路径有效?
- 如何让它与变量替换一起工作?
引用变量有效 "$WORKINGDIR"/myjar.jar