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

linux – 如何从Scala执行shell builtin

发布时间:2020-12-13 19:14:49 所属栏目:Linux 来源:网络整理
导读:我需要从 Linux中的Scala脚本检查一些系统设置,如ulimit -n.如果我要处理普通命令,我会使用scala.sys.process包,如: import scala.sys.process._println("ls -lha".!!) 不幸的是,这对shell内置函数不起作用.有没有办法从Scala中内置的shell中捕获输出? 更
我需要从 Linux中的Scala脚本检查一些系统设置,如ulimit -n.如果我要处理普通命令,我会使用scala.sys.process包,如:
import scala.sys.process._
println("ls -lha".!!)

不幸的是,这对shell内置函数不起作用.有没有办法从Scala中内置的shell中捕获输出?

更新:

我尝试了几种形式的通常技巧sh -c“ulimit -n”,没有运气;以下所有命令均失败:

"sh -c 'ulimit -n'".!!
"sh -c "ulimit -n"".!!
"""sh -c "ulimit -n"""".!!
"""sh -c "ulimit -n """ + """.!!

我在REPL中遇到运行时错误:

-n": 1: Syntax error: Unterminated quoted string
java.lang.RuntimeException: Nonzero exit value: 2
    at scala.sys.package$.error(package.scala:27)
    at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.slurp(ProcessBuilderImpl.scala:131)
    at scala.sys.process.ProcessBuilderImpl$AbstractBuilder.$bang$bang(ProcessBuilderImpl.scala:101)
    at .<init>(<console>:11)
    at .<clinit>(<console>)
    at .<init>(<console>:11)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704)
    at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920)
    at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43)
    at scala.tools.nsc.io.package$$anon$2.run(package.scala:25)
    at java.lang.Thread.run(Thread.java:722)

解决方法

将字符串转换为shell命令时,参数由空格分隔.您尝试的约定是shell约定,因此您需要一个shell来开始应用它们.

如果您想要更多地控制每个参数是什么,请使用Seq [String]而不是String,或者使用一个相同的Process工厂.例如:

Seq("sh","-c","ulimit -n").!!

(编辑:李大同)

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

    推荐文章
      热点阅读