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

发布于 2024-12-12 02:15:54 字数 468 浏览 0 评论 0原文

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

我正在使用

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

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

问题:

是否有一种方法可以让我的脚本始终将可用路径作为参数传递给 ruby​​(jruby,但这应该不重要)。

欢迎提供单一解决方案或以不同方式处理 cygwin 和 unix 环境的建议。

In my scrip I have a section that needs to change a local path name into an absolute path(not going in to it, sorry)

I am using

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

This works for things inside the script, but when I pass this absolute file path to ruby, it does not know what to do. I can think of ways to fix this problem on my local box through string substitution.
sub (C: for cygpath/c), but if I were to deploy my script to an unknown file system I could be in trouble.
it needs to work on cygwin for development (I know I have to develop in widows) and unix boxes.

Question:

Is the a way that I can make my script always pass a usable path as an arg to ruby (jruby but that should not matter).

advice for a single solution or one tackles the cygwin and unix environments differently are both welcome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情丝乱 2024-12-19 02:15:54

Cygwin 的 cygpath 命令就是完成这项工作的工具。它在 Cygwin 的 POSIX 路径和各种形式的 Windows 路径之间进行转换。它甚至会为您执行绝对路径转换,因此:

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

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

Cygwin's cygpath command is the tool for the job. It converts between Cygwin's POSIX paths and various forms of Windows paths. It will even do the absolute path conversion for you, so:

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

See cygpath's help output or man page for details on its options.

还如梦归 2024-12-19 02:15:54

@ak2 具有正确答案。不过,最好使用数组来构建参数,特别是在路径有空格的情况下:

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

@ak2 has the right answer. You would be better off using an array to build up the arguments though, especially if the path has a space:

args=(-f)
args+=("$(cygpath -wa "$relative-path")")
jruby -Ilib bin/trace.rb "${args[@]}"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文