外部命令
在Java中我们可以使用Runtime.getRuntime().exec();来和系统交互。
在Scala中scala.sys.process提供了shell和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等操作。
使用!来执行外部命令,如 "ping www.baidu.com" !
外部命令感觉用得不多,暂时做下了解。
使用逻辑操作#&&,#||
cmd1 #&& cmd2
cmd1 #|| cmd2
使用管道:
cmd1 #| cmd2
也就是说要加个#在前面
使用重定向时:a #< file or file #> a
a可以是一个文件或者一个命令,如: file(“blog.html”) #> file(“fuliang_blog.html”) !
还可以使用 #>> #<<追加操作:
a #>> file or file #<<
package com.dt.scala.moguyun
/**
* scala外部命令
* scala.sys.process提供了shell和系统交互的DSL,包括执行命令、逻辑操作、重定向、管道等操作。
* Created by hlf on 2016/8/13.
*/
object CMD {
def main(args: Array[String]) {
//要导入这个包
import scala.sys.process._
//使用!来执行外部命令
"ping www.baidu.com" !
val pingCMD = "ping www.baidu.com" !
//这里在上面得空一行,不然报错,真郁闷,猜测可能是!是执行命令,不能马上加其他执行语句
println(pingCMD)
}
}
结果
正在 Ping www.a.shifen.com [14.215.177.37] 具有 32 字节的数据:
来自 14.215.177.37 的回复: 字节=32 时间=7ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=6ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=6ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=7ms TTL=56
14.215.177.37 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 6ms,最长 = 7ms,平均 = 6ms
正在 Ping www.a.shifen.com [14.215.177.37] 具有 32 字节的数据:
来自 14.215.177.37 的回复: 字节=32 时间=7ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=7ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=7ms TTL=56
来自 14.215.177.37 的回复: 字节=32 时间=6ms TTL=56
14.215.177.37 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 6ms,最长 = 7ms,平均 = 6ms
0
Process finished with exit code 0
感谢[DT大数据梦工厂]首席专家Spark专家王家林老师的课程分享。更多精彩内容请扫描关注[DT大数据梦工厂]微信公众号DT_Spark