Scala的設計目標之一就是能在簡單的腳本化任務和大型程序之間保持良好的伸縮性。scala.process包提供了用於與shell程序交互的工具。可以利用Scala編寫shell腳本,利用Scala提供的所有威力。
如下是一個簡單的實例:
import sys.process._
"ls -al .." !
這樣做的結果是,ls -al ..命令被執行,顯示上層目錄中的所有文件。
sys.process包含了一個從字符串到ProcessBuilder對象的隱式轉換。!操作符執行的就是這個ProcessBuilder對象。
!操作符返回的結果是被執行程序的返回值:程序成功執行的話就是0,否則就是顯示錯誤的非0值。
如果使用!!,輸出會以字符串的形式返回。
val result = "ls -al .." !!
要把輸出重定向到文件,使用#》操作符:
"ls -al .." #> new File("output.txt") !
要追到到文件末尾而不是從頭覆蓋的話,使用#>>操作符:
"ls -al .." #>> new File("output.txt") !
要把某個文件的內容作爲輸入,使用#< :
"ls -al .." #< new File("output.txt") !
從URL重定向輸入:
"grep Scala" #< new URL("http://horstmann.com/index.html") !