将Cygwin路径转换为ruby可以理解的路径

时间:2011-10-25 21:09:11

标签: ruby bash cygwin jruby

在我的脚本中,我有一个部分需要将本地路径名称更改为绝对路径(不进入,抱歉)

我正在使用

args+="-f "
args+="$(realpath "$relative-path") "
jruby -Ilib bin/trace.rb $args

这适用于脚本中的内容,但是当我将此绝对文件路径传递给ruby时,它不知道该怎么做。我可以想办法通过字符串替换在我的本地方框上解决这个问题。 sub(C:for cygpath / c),但是如果我要将我的脚本部署到一个未知的文件系统,我可能会遇到麻烦。 它需要在cygwin上进行开发(我知道我必须在寡妇中开发)和unix盒子。

问题:

这是一种方法,我可以使我的脚本总是通过一个可用的路径作为一个arg到ruby(jruby,但这不重要)。

对单个解决方案的建议或以不同方式处理cygwin和unix环境的建议都是受欢迎的。

2 个答案:

答案 0 :(得分:5)

Cygwin的cygpath命令是工作的工具。它在Cygwin的POSIX路径和各种形式的Windows路径之间进行转换。它甚至会为你做绝对路径转换,所以:

args+="$(cygpath -wa "$relative-path") "

有关其选项的详细信息,请参阅cygpath的帮助输出或手册页。

答案 1 :(得分:1)

@ak2有正确的答案。你最好使用数组来构建参数,特别是如果路径有空格:

args=(-f)
args+=("$(cygpath -wa "$relative-path")")
jruby -Ilib bin/trace.rb "${args[@]}"