2013-06-05 77 views
4

我有一个sh文件看起来像以下:如何在shell脚本中一起运行多个ruby文件?

ruby one.rb 
ruby two.rb 
ruby three.rb 
ruby four.rb 
ruby five.rb 
ruby six.rb 
ruby seven.rb 
ruby eight.rb 

这样做是一个运行Ruby文件之一。我将如何去联合推出前四项,并在前四项完成之后立即抓取下一组。不知道如何解决这个问题,任何建议表示赞赏。我现在要避免使用rake,并继续使用shell。

回答

13

您是否尝试过使用&wait

ruby one.rb & 
ruby two.rb & 
ruby three.rb & 
ruby four.rb & 
wait 
ruby five.rb & 
ruby six.rb & 
ruby seven.rb & 
ruby eight.rb & 

http://tldp.org/LDP/abs/html/subshells.html

+1

+1,你教我的东西有 –

+0

我想给使用子这样的回答炮弹,但不知道“等待”。 +1为好回答 –

+0

woohoo工作!每天学习一些东西.. *拇指通过subhells doc *谢谢! – Josh

0

不要回避耙。现在了解它并从此受益。

require 'rake' 
run = -> sym { system "ruby #{sym}.rb" } 
u, v = [:one, :two, :three, :four ], [:five, :six, :seven, :eight] 
u.each { |sym| task sym do run.(sym) end } 
multitask midpoint: u 
v.each { |sym| task sym => :midpoint do run.(sym) end } 
multitask(all: v).invoke 
+0

不,我已经想过了,这个断言的严重性保证了它的存在,作为可能的答案之一。 –

+0

@AndyHayden:编辑 –

+0

@BorisStitnicky谢谢,不能帮助downvotes,但那*做*停止它被删除:) –

2

创建一个文本文件,它看起来像:

one.rb 
two.rb 
three.rb 

...等等。称它为“工作”或任何你想要的。然后,假设您正在运行Ubuntu或类似的系统:

sudo apt-get install parallel 
parallel ruby < jobs 

parallel命令的信息,请访问:http://www.gnu.org/software/parallel/

相关问题