scala中执行外部命令(scala.sys.process)

目前 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]

直接将文字重定向到一个文件,我现在还不知道怎么做。只能变通用写文件的啰嗦方式。

发表评论

电子邮件地址不会被公开。 必填项已用*标注