基本压缩文件。一般处理文件。红宝石
问题描述:
我刚刚在Ruby中使用文件,我发现了以下问题。基本压缩文件。一般处理文件。红宝石
执行以下行时间:
'zip -r "c:\temp\a.zip" "c:\temp\a.txt"'
从IRB我收到以下:
=> "zip -r \"c:\\temp\\a.zip\" \"c:\\temp\\a.txt\""
,绝对未压缩文件。所以在这里我的问题是:
-
为什么红宝石加包装
\\
围绕文件的路径和\
迹象。如果你可以详细说明这将是非常有用的,因为我无法找到反斜杠信息 如何逃避这些迹象?
我的环境:
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都是操作系统不可知的,所以你可以像普通人一样使用正斜杠。