使用Rake进行Shell脚本排序

时间:2010-04-01 19:29:11

标签: ruby git shell rake

我正在开发一个rake实用程序,并希望实现下面提到的内容:

我的Rake文件中的序列中有一些shell命令。我想要的是序列应该等待上一个命令完成处理,然后再移动到下一个命令。

sh "git commit -m \"#{args.commit_message}\"" do |ok, res|
  # Do some processing
end

sh "git push heroku master"

所以,在上面的例子里我想要的是那个

sh "git push heroku master"

中处理之前不应执行

sh "git commit -m \"#{args.commit_message}\"" do |ok, res|
  # Do some processing
end

已完成。

另外一件好事就是如果我可以将shell命令的输出存储在Ruby变量中,那么如果需要它可以用于进一步的操作。

期待很快得到社区成员的回复。

提前致谢。

1 个答案:

答案 0 :(得分:2)

除非我遗漏了什么,否则你可以使用Ruby的内置命令之一来执行系统命令;请查看http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html以获取更多信息。

在该链接中没有提到,但我可能会选择使用反引号(我不确定它是否与系统方法不同)来执行shell命令,如:

output = `ls`     # => gets the output of the ls command to the output variable

...因此,我不明白为什么你不能这样做:

output = `git commit -m "#{args.commit_message}"` do |ok, res|
  # Do some processing
end