我正在开发一个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变量中,那么如果需要它可以用于进一步的操作。
期待很快得到社区成员的回复。
提前致谢。
答案 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