加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用scala.sys.process执行bash字符串

发布时间:2020-12-16 09:28:56 所属栏目:安全 来源:网络整理
导读:我最近在Scala中发现了sys.process包,并被它的力量所逗乐. 但是当我尝试将它与bash管和反引号结合起来时,我会陷入困境. 这显然不起作用: scala "echo `date`" !!res0: String = ""`date`" 我尝试使用bash可执行文件来获得所需的行为: scala "bash -e echo
我最近在Scala中发现了sys.process包,并被它的力量所逗乐.

但是当我尝试将它与bash管和反引号结合起来时,我会陷入困境.

这显然不起作用:

scala> "echo `date`" !!
res0: String = "
"`date`
"

我尝试使用bash可执行文件来获得所需的行为:

scala> "bash -e echo `date`" !!
/bin/echo: /bin/echo: cannot execute binary file
java.lang.RuntimeException: Nonzero exit value: 126

我究竟做错了什么?

编辑:

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

解决方法

你实际上做了很多错事.你应该使用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
"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读