2010-04-01 52 views
1

我正在耙效用和希望實現以下提到的某些東西:Shell腳本序列與耙

有序列中的一些shell命令在我的Rake文件。我想要的是序列應該等待前一個命令完成處理,然後才能移動到下一個命令。

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變量中,以便在需要時可用於進一步操作。

期待不久的社區成員的回覆。

在此先感謝。

回答

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