运行 几个 'exec' 在一个 ruby 循环中
Running several 'exec' in a ruby loop
我正在扫描文件夹中的音频文件并将其转换为 mp3。
在 RUBY 中表现出色。
但是,一旦完成第一次转码,它就会停止整个循环
这是我的代码过程的细目。
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
exec exec_command
}
end
发生的事情是它正在对找到的第一个文件进行转码,然后停止整个功能。有没有办法强制它继续?
ffmpeg 运行 并且目前正确完成,所以它没有破坏任何东西
exec 用给定的命令 运行 替换当前进程。示例:
2.0.0-p598 :001 > exec 'echo "hello"'
hello
shivam@bluegene:$
您可以看到 exec
如何用系统 echo
替换 irb 然后自动退出。
因此请尝试使用 system。这里使用 system
:
的相同示例
2.0.0-p598 :003 > system 'echo "hello"'
hello
=> true
2.0.0-p598 :004 >
你可以看到我还在irb,执行命令后并没有退出。
这使得您的代码如下:
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
system exec_command
}
end
连同 shivam 关于使用 system
的回答,spawn
方法在这里也可能有用:
我正在扫描文件夹中的音频文件并将其转换为 mp3。 在 RUBY 中表现出色。 但是,一旦完成第一次转码,它就会停止整个循环
这是我的代码过程的细目。
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
exec exec_command
}
end
发生的事情是它正在对找到的第一个文件进行转码,然后停止整个功能。有没有办法强制它继续?
ffmpeg 运行 并且目前正确完成,所以它没有破坏任何东西
exec 用给定的命令 运行 替换当前进程。示例:
2.0.0-p598 :001 > exec 'echo "hello"'
hello
shivam@bluegene:$
您可以看到 exec
如何用系统 echo
替换 irb 然后自动退出。
因此请尝试使用 system。这里使用 system
:
2.0.0-p598 :003 > system 'echo "hello"'
hello
=> true
2.0.0-p598 :004 >
你可以看到我还在irb,执行命令后并没有退出。
这使得您的代码如下:
def scanFolder
# lots of code above to get folder list, check for incorrect files etc..
audioFileList.each {
|getFile|
exec_command = "ffmpeg #{getFile} #{newFileName}"
system exec_command
}
end
连同 shivam 关于使用 system
的回答,spawn
方法在这里也可能有用: