为scala.sys.prrocess进程提供带引号的参数



我使用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)) !

到目前为止还不错。但是,如果我想要一个包含空格的电子邮件主题,邮件管理员文件会声明

-s主题在命令行中指定主题。。。注意引用包含空格的主题。

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

val emailSubject = " "A Spaceful Email Subject" "
(("cat " + emailFile) #| ("mail -s" + emailSubject + emailList)) !

我得到一个错误:

ect"…不平衡"

那么,如何向使用scala.sys.process的过程提供引用的参数呢?

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

使用scala.sys.process时,您也可以使用Seq来打包具有任意空格、换行符等参数的可执行文件。

考虑:

val emailSubject = "A Spaceful Email Subject"
(s"cat $emailFile" #| Seq("mail", "-s", emailSubject, emailList)).!

您也可以在Scala 2.11.7 scaladocs 中看到这样的例子

最新更新