目前 scala.sys.process 已经封装的足够简单。参考:http://itang.iteye.com/blog/1126777
[scala toolbar=”false” light=”true”]
scala> import scala.sys.process._
// 只需在结尾用!号,就表示执行外部命令
scala> val list = “ls -l” !
[/scala]
还可以重定向,甚至可以在java对象与命令之间:
[scala toolbar=”false” light=”true”]
scala> new java.net.URL(“http://www.iteye.com”) #>
new java.io.File(“/tmp/iteye.html”) !
[/scala]
注意,重定向必须用 new java.io.File("")
封装,否则会当作命令,比如
[scala toolbar=”false” light=”true”]
scala> “ls” #> “/tmp/a” !
[/scala]
将会出错,必须
[scala toolbar=”false” light=”true”]scala> “ls” #> new java.io.File(“/tmp/a”) !
[/scala]
管道的用法:
[scala toolbar=”false” light=”true”]scala> val list = “ls -l” #| “grep P” !
[/scala]
不能在命令表达式中直接用管道, 比如 "ls | grep XXX"
这样不灵,必须用 #|
声明。
更多参考:https://github.com/harrah/xsbt/wiki/Process
//2012.6.15
要把System.getProperties 里的内容重定向到一个文件如何实现?
下面的方法不行,它会将第一个表达式的结果当作命令来执行
[scala toolbar=”false” light=”true”]scala> System.getProperties.toString #> new java.io.File(“/tmp/env”) !
[/scala]
直接将文字重定向到一个文件,我现在还不知道怎么做。只能变通用写文件的啰嗦方式。