基本压缩文件。一般处理文件。红宝石

问题描述:

我刚刚在Ruby中使用文件,我发现了以下问题。基本压缩文件。一般处理文件。红宝石

执行以下行时间:

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

从IRB我收到以下:

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

,绝对未压缩文件。所以在这里我的问题是:

  1. 为什么红宝石加包装

    \\
    围绕文件的路径和
    \
    迹象。如果你可以详细说明这将是非常有用的,因为我无法找到反斜杠信息

  2. 如何逃避这些迹象?

我的环境:

 
Windows 7 
jRuby 153 

反斜线逃逸。

在任何情况下,如果您只是评估字符串,那只是字符串即字符串。当你使用单引号时,反斜杠只是反斜杠,而不是转义字符。在内部,为了打印反斜杠的字符串,它必须被转义,所以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" 

你还没有真正什么 - you're只创建一个字符串。

如果你想执行该字符串作为命令,你需要使用back-ticks而不是单引号。此外,Ruby和Java都是操作系统不可知的,所以你可以像普通人一样使用正斜杠。