2012-02-07 10 views
0

Rubyでファイルを扱うのが初めてで、次の問題が見つかりました。基本的なファイルを圧縮します。一般的なファイルの操作。 Ruby

次の行を実行する場合:IRBから

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

を私は次のことを受け取る:

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

間違いファイルが圧縮されていません。だからここに私の質問は:

  1. なぜルビーは、ファイルのパスと

    \
    兆候の周りのラッパー
    \\
    を追加ありません。もし私がバックスラッシュについての情報を見つけることができなかったので、これを詳しく説明できれば、本当に役に立ちます。

  2. これらの看板を逃す方法は?

私の環境:

 
Windows 7 
jRuby 153 

答えて

2

バックスラッシュエスケープされています。

いずれにしても、文字列を評価するだけの場合は、文字列としての文字列です。一重引用符を使用する場合、バックスラッシュはエスケープ文字ではなくバックスラッシュだけです。内部的には、文字列にバックスラッシュを印刷するには、エスケープする必要があります。そうすれば、Rubyはそれを行います。 - 単なる文字列を作成you're

> '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" 

あなたはまたしている実際に何もしていない:あなたはそれを変数に割り当てられ、putsと呼ばれる場合

コマンドとして文字列を実行にしたい場合は、バックティックではなく、単一引用符を使用する必要があります。また、RubyとJavaはどちらもOSに依存しないため、通常の人のようにスラッシュを使用できます。

関連する問題