我想從Scala程序發出本地系統命令,並且可能會捕獲輸出。 (想到「ls」,可能還有其他方法可以在不發出命令的情況下獲取目錄信息,但這不在我的問題之中)。它將對應於Python中的os.system(...)。在Scala中發佈本機系統命令
我看了「Programming in Scala」。我看過O'Reilly的「Programming Scala」。我Google搜索了幾個術語組合。沒有運氣。有人可以給我一個例子,或者指出我可以找到一個例子的資源嗎?
我想從Scala程序發出本地系統命令,並且可能會捕獲輸出。 (想到「ls」,可能還有其他方法可以在不發出命令的情況下獲取目錄信息,但這不在我的問題之中)。它將對應於Python中的os.system(...)。在Scala中發佈本機系統命令
我看了「Programming in Scala」。我看過O'Reilly的「Programming Scala」。我Google搜索了幾個術語組合。沒有運氣。有人可以給我一個例子,或者指出我可以找到一個例子的資源嗎?
最好的方法是使用scala.sys.process。
匿名用戶評論:請檢查'scala.sys.process.Process'。 – Anne 2011-11-28 15:03:51
@安妮謝謝,我已經更新了指向ScalaDoc的答案。該軟件包*是*進程庫,它已進入標準庫。 – 2011-11-29 16:12:48
由於您可以使用Scala的interop功能調用任何Java API函數,Scala在這方面與Java沒有區別。參見例如java.lang.ProcessBuilder
。
import scala.sys.process._
val vimLocation: String = "whereis vim" !!
引用鏈接已損壞 – 2013-01-20 22:09:47
您可以輕鬆地使用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。
您不應該標記正確的答案。這將是一件好事,它會讓未來看到你的問題的人有更多的動機回答。 :) – 2011-11-25 00:35:26
完成。感謝您的提醒。 – Tony 2011-11-25 17:59:27