我最近sys.process在Scala中发现了包,并被它的力量逗乐了.
但是当我尝试将它与bash管和反引号结合起来时,我就陷入了困境.
这显然不起作用:
scala> "echo `date`" !!
res0: String = "
"`date`
"
Run Code Online (Sandbox Code Playgroud)
我试图使用bash可执行文件来获得所需的行为:
scala> "bash -e echo `date`" !!
/bin/echo: /bin/echo: cannot execute binary file
java.lang.RuntimeException: Nonzero exit value: 126
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:
scala> "bash -ic 'echo `date`'" !!
`date`': unexpected EOF while looking for matching `''
`date`': syntax error: unexpected end of file
java.lang.RuntimeException: Nonzero exit value: 1
Run Code Online (Sandbox Code Playgroud)
Kim*_*bel 22
你实际上做了很多错事.你应该使用bash的-c选项,你应该使用Seq [String]和每个参数在它自己的String中进行bash,或者scala库只是在每个空格字符处拆分String.(这就是Rex Kerr的解决方案不起作用的原因.)
scala> import sys.process.stringSeqToProcess
import sys.process.stringSeqToProcess
scala> Seq("bash", "-c", "echo `date`")!!
res20: String =
"Sun Dec 4 16:40:04 CET 2011
"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4365 次 |
| 最近记录: |