2010-06-17 22 views
25

我想從Scala程序發出本地系統命令,並且可能會捕獲輸出。 (想到「ls」,可能還有其他方法可以在不發出命令的情況下獲取目錄信息,但這不在我的問題之中)。它將對應於Python中的os.system(...)。在Scala中發佈本機系統命令

我看了「Programming in Scala」。我看過O'Reilly的「Programming Scala」。我Google搜索了幾個術語組合。沒有運氣。有人可以給我一個例子,或者指出我可以找到一個例子的資源嗎?

+0

您不應該標記正確的答案。這將是一件好事,它會讓未來看到你的問題的人有更多的動機回答。 :) – 2011-11-25 00:35:26

+0

完成。感謝您的提醒。 – Tony 2011-11-25 17:59:27

回答

28

最好的方法是使用scala.sys.process

+1

匿名用戶評論:請檢查'scala.sys.process.Process'。 – Anne 2011-11-28 15:03:51

+0

@安妮謝謝,我已經更新了指向ScalaDoc的答案。該軟件包*是*進程庫,它已進入標準庫。 – 2011-11-29 16:12:48

1

由於您可以使用Scala的interop功能調用任何Java API函數,Scala在這方面與Java沒有區別。參見例如java.lang.ProcessBuilder

0

Scala與Java完全互操作。所以你可以像從Java那樣調用Scala的系統命令。請參閱this以瞭解如何從Java調用系統命令。

+0

查看其他答案,Scala的圖書館使事情變得更加方便。 – Langley 2013-03-27 18:27:10

4
import scala.sys.process._ 

val vimLocation: String = "whereis vim" !! 

reference

+0

引用鏈接已損壞 – 2013-01-20 22:09:47

0

您可以輕鬆地使用sys.process做到這一點:

執行系統命令,並得到他們的狀態代碼(退出代碼):

import sys.process._ 

val result = "your_command" ! 
println("result = "+result) // result contain zero for success or non zero for fail 

獲取輸出系統命令:

import sys.process._ 

val result = "your_command" !! 
println("result = "+result) // result contain output from the command 

您有其他幾個選項(管道,將stdout,附加到標準輸出和......),你可以看到this link