리눅스의 스칼라 스크립트에서 ulimit -n
과 같은 시스템 설정을 확인해야합니다.Scala에서 쉘 내장 명령을 실행하는 방법
import scala.sys.process._
println("ls -lha".!!)
불행하게도이 쉘 내장 명령이 작동하지 않습니다 :처럼 평범한 명령을 처리했다 나는 scala.sys.process
패키지를 사용합니다. 스칼라에 내장 된 쉘에서 출력물을 잡을 방법이 있습니까?
업데이트 :
내가 운이 여러 형태로 일반적인 트릭 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)
예를 들어 Scala 스크립트에서 REPL 외부에서 사용해 보셨습니까? –