【发布时间】:2015-08-13 14:03:35
【问题描述】:
我想在 ruby 中使用 system()。 system() 中的字符串内容括号。所以我尝试了:
filenamenew = filename.gsub(/ /, '_').gsub(/(/, '|').gsub(/)/, ']')
很遗憾,我得到了:
/home/sascha/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in
require': /home/sascha/ownCloud/RubymineProjects/youtube_dlhelper/lib/youtube_dlhelper/ripper.rb:57: end pattern with unmatched parenthesis: /(/ (SyntaxError) unmatched close parenthesis: /)/ from /home/sascha/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:inrequire' 来自 ./youtube_dlhelper。 rb:24:in `'
我可以解决这个问题吗?
【问题讨论】:
-
你得到的文件名是什么,你希望它最终看起来像什么?另外你是错误的,你的代码似乎没有排队......
-
在这种情况下,文件名是:Rednex - Cotton Eye Joe (Official Music Video) [HD] - RednexMusic com.m4a
-
你希望它最终是什么样子的?
-
我想试试:system("ffmpeg -y -i #{filenamein} -acodec vorbis -vn -ac 2 -aq 60 -strict -2 #{filenamenew}.ogg") . filenamein 是发布的字符串。文件名是 filenamenew = filename.gsub(/ /, '_')。所以空白正在消失。
-
不完全回答您的问题,但 string 有一个
shellescape方法可以转义字符串,以便安全地传递给 shell