在我的脚本中,我有一个部分需要将本地路径名称更改为绝对路径(不进入,抱歉)
我正在使用
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环境的建议都是受欢迎的。
答案 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[@]}"