【问题标题】:cygwin bash forward slash converted to backslashcygwin bash 正斜杠转换为反斜杠
【发布时间】:2016-08-07 22:02:31
【问题描述】:

我们无法计算出这个或创建一个可以重现这个的样本。

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

我的文件.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 \路径\库

但是,如果我要硬编码 myfile.sh 中的路径;它有效

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

问题

  1. 为什么exec命令的“$@”把WORKINGDIR变量中的/改为\?
  2. 为什么硬编码路径有效?
  3. 如何让它与变量替换一起工作?

【问题讨论】:

  • hmm .. 我想我通过引用 $WORKINGDIR 让它工作了,所以命令是 $HADOOPCMD jar "$WORKINGDIR"/myjar.jar
  • 一般的经验法则是“总是引用你的变量扩展”。

标签: windows bash cygwin filenames slash


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2019-11-19
    • 2020-11-10
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多