преобразование пути Cygwin в путь, который может понять рубин - PullRequest
1 голос
/ 26 октября 2011

В моем скрипте есть раздел, в котором необходимо изменить имя локального пути на абсолютный (не входя в него, извините)

Я использую

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

Это работает для вещей внутри скрипта, но когда я передаю этот абсолютный путь к файлу в ruby, он не знает, что делать. Я могу думать о способах решения этой проблемы на моем локальном компьютере с помощью подстановки строк. sub (C: для cygpath / c), но если бы я развернул свой скрипт в неизвестной файловой системе, у меня могли бы возникнуть проблемы. он должен работать на Cygwin для разработки (я знаю, что я должен разрабатывать в вдовах) и Unix Box.

Вопрос:

Это способ, которым я могу сделать так, чтобы мой скрипт всегда передавал полезный путь как arg к ruby ​​(jruby, но это не должно иметь значения).

советы по одному решению или по-разному относятся к средам Cygwin и Unix.

Ответы [ 2 ]

5 голосов
/ 26 октября 2011

Команда Cygwin cygpath является инструментом для работы.Он преобразует между путями POSIX Cygwin и различными путями Windows.Он даже сделает преобразование абсолютного пути для вас, поэтому:

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

См. Вывод справки cygpath или справочную страницу для получения подробной информации о его параметрах.

1 голос
/ 26 октября 2011

@ ak2 имеет правильный ответ. Хотя для построения аргументов лучше использовать массив, особенно если в пути есть пробел:

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