我正在尝试启动mplayer.我的文件名包含空格,这些应该被转义.
这是我使用的代码:
这是我使用的代码:
@player_pid = fork do exec "/usr/bin/mplayer #{song.file}" end
其中#{song.file}包含像“/ home / example / music / 01 – song.mp3”这样的路径.我如何正确地逃避这个变量(和标题可能包含的其他奇怪的字符),所以终端会接受我的命令?
解决方法
Shellwords应该为你工作:)
exec "/usr/bin/mplayer %s" % Shellwords.escape(song.file)
在红宝石1.9.x中,看起来您必须先要求它
require "shellwords"
但是在ruby 2.0.x中,我没有必要明确要求它.