使用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 " (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |