Основные архивные файлы. Работа с файлами в целом. Рубин - PullRequest
0 голосов
/ 08 февраля 2012

Я новичок в работе с файлами в Ruby и обнаружил следующую проблему.

При выполнении следующей строки:

'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'

из IRB я получаю следующее:

=> "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\""

и файл определенно не сжат.Итак, мой вопрос здесь:

  1. Почему ruby ​​добавляет оболочку

    \\
    вокруг пути к файлу и
    \
    знаков.Если бы вы могли уточнить это, это было бы очень полезно, так как я не смог найти информацию о обратных наклонных чертах
  2. Как избежать этих знаков?

Моя среда:

Windows 7
jRuby 153

1 Ответ

2 голосов
/ 08 февраля 2012

Обратные косые черты являются побегами.

В любом случае, если вы просто оцениваете строку, это просто строка как строка. Когда вы используете одинарные кавычки, обратные слэши - это просто обратные слэши, а не экранирующие символы. Внутренне, чтобы строка выводила обратную косую черту, она должна быть экранирована, поэтому Ruby сделает это за вас.

Если вы присвоили его переменной и вызвали puts:

> 'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
 => "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\"" 
> s = 'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
 => "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\"" 
> puts s
zip -r "c:\temp\a.zip" "c:\temp\a.txt"

На самом деле вы тоже ничего не делаете - вы просто создаете строку.

Если вы хотите выполнить строку как команду, вы должны использовать обратные тики, а не одинарные кавычки. Кроме того, и Ruby, и Java не зависят от ОС, поэтому вы можете использовать косую черту, как обычные люди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...