为scala.sys.process进程提供引用参数

时间:2015-12-18 20:12:37

标签: linux scala email

我使用scala.sys.process包从scala应用程序中将邮件命令发送到linux命令行:

val emailList = "foo@nonExistentEntity.com,bar@nonExistentEntity.com"

val emailFile = "/home/localUser/localFile.txt"

import scala.sys.process._

(("cat " + emailFile) #| ("mail -s EmailSubject " + emailList)) !

到目前为止一切顺利。但是,如果我想要一个包含邮件man文件的空格的电子邮件主题

  

-s主题          在命令行上指定主题...小心引用包含空格的主题。

当我尝试用引号包装主题并将其发送到邮件时:

val emailSubject = " \"A Spaceful Email Subject\" "

(("cat " + emailFile) #| ("mail -s" + emailSubject + emailList)) !

我收到错误:

  

" ...不平衡'"'

那么,如何使用scala.sys.process

为流程提供引用的参数

提前感谢您的考虑和回应。

1 个答案:

答案 0 :(得分:3)

使用scala.sys.process时,您还可以使用Seq打包可执行文件,其参数可以包含任意空格,换行符等。

考虑:

val emailSubject = "A Spaceful Email Subject"

(s"cat $emailFile" #| Seq("mail", "-s", emailSubject, emailList)).!

您还可以在Scala 2.11.7 scaladocs

中查看此示例