3
舉個例子,我想在rake下運行下面的命令。編寫rakefile在Windows中運行命令的最佳方法是什麼?
robocopy C:\Media \\other\Media /mir
的Rake文件我能得到的工作是
def sh(str)
str.tr!('|', '\\')
IO.popen(str) do |pipe|
pipe.each do |line|
puts line
end
end
end
task :default do
sh 'robocopy C:|Media ||other|Media /mir'
end
但是字符串文字的處理是尷尬。
如果我使用一個定界符輸入字符串字面
<<HEREDOC
copy C:\Media \\other\Media /mir
HEREDOC
我得到的錯誤
rakefile.rb:15: Invalid escape character syntax
copy C:\Media \\other\Media /mir
^
rakefile.rb:15: Invalid escape character syntax
copy C:\Media \\other\Media /mir
^
如果我使用單引號,背面斜線的一個丟失。
irb(main):001:0> 'copy C:\Media \\other\Media /mir'
=> "copy C:\\Media \\other\\Media /mir"
是的,但像我列在問題中的代碼,它是尷尬逃脫所有反斜槓字符。 – Frank 2009-02-09 20:54:18