So führen Sie die in Scala eingebaute Shell aus

Ich muss einige Systemeinstellungen wie überprüfenulimit -n von Scala-Skript in Linux. Hätte ich mit gewöhnlichen Befehlen zu tun, die ich benutzen würdescala.sys.process Paket wie:

import scala.sys.process._
println("ls -lha".!!)

Leider funktioniert dies nicht für Shell-Buildins. Gibt es eine Möglichkeit, eine Ausgabe der in Scala eingebauten Shell abzufangen?

Aktualisieren:

Ich habe den üblichen Trick ausprobiertsh -c "ulimit -n" in mehreren Formen ohne Glück; Alle folgenden Befehle schlagen fehl:

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

Und ich erhalte einen Laufzeitfehler in 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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage