在我的脚本中,我有一个部分需要将本地路径名更改为绝对路径(抱歉,不是这个部分)
我正在使用
args+="-f "
args+="$(realpath "$relative-path") "
jruby -Ilib bin/trace.rb $args这适用于脚本内部的内容,但是当我将这个绝对文件路径传递给ruby时,它不知道该做什么。我可以想办法通过字符串替换在本地机器上解决这个问题。sub (C:代表cygpath/c),但是如果我将我的脚本部署到一个未知的文件系统,我可能会遇到麻烦。它需要在cygwin上进行开发(我知道我必须在寡妇环境下开发)和unix机器。
问题:
这是一种我可以让我的脚本总是将可用的路径作为arg传递给ruby的方法(jruby,但这无关紧要)。
对于单个解决方案或以不同方式处理cygwin和unix环境的建议都是受欢迎的。
发布于 2011-10-26 15:55:15
Cygwin的cygpath命令就是完成这项工作的工具。它可以在Cygwin的POSIX路径和各种形式的Windows路径之间进行转换。它甚至会为你做绝对路径转换,所以:
args+="$(cygpath -wa "$relative-path") "有关其选项的详细信息,请参阅cygpath的帮助输出或手册页。
发布于 2011-10-26 20:47:15
@ak2有正确的答案。不过,最好使用数组来构建参数,特别是在路径包含空格的情况下:
args=(-f)
args+=("$(cygpath -wa "$relative-path")")
jruby -Ilib bin/trace.rb "${args[@]}"https://stackoverflow.com/questions/7895922
复制相似问题