28 Stimmen

Native Systembefehle in Scala ausgeben

Ich möchte einen nativen Systembefehl aus einem Scala-Programm ausgeben, und vielleicht Trap die Ausgabe. ("ls" kommt mir in den Sinn. Vielleicht gibt es auch andere Möglichkeiten, Verzeichnisinformationen zu erhalten, ohne den Befehl auszuführen, aber das ist nicht der Punkt meiner Frage). Es würde os.system(...) in Python entsprechen.

Ich habe in "Programming in Scala" nachgeschaut. Ich habe in O'Reilly's "Programming Scala" nachgeschaut. Ich habe verschiedene Kombinationen von Begriffen gegoogelt. Bisher kein Glück. Kann mir jemand da draußen ein Beispiel geben oder mich auf eine Quelle verweisen, wo ich ein Beispiel finden kann?

31voto

Daniel C. Sobral Punkte 290004

Der beste Weg, dies zu tun, ist die Verwendung von scala.sys.process .

4voto

Johan Prinsloo Punkte 1188
import scala.sys.process._

val vimLocation: String = "whereis vim" !!

Referenz

1voto

Greg Hewgill Punkte 882617

Scala unterscheidet sich in diesem Bereich nicht von Java, da Sie alle Java-API-Funktionen mit den Interop-Funktionen von Scala aufrufen können. Siehe zum Beispiel, java.lang.ProcessBuilder .

1voto

Saeed Zarinfam Punkte 9384

Sie können dies tun mit sys.process leicht:

Ausführen von Systembefehlen und Abrufen ihres Statuscodes (Exit-Code):

import sys.process._

val result = "your_command" !
println("result = "+result) // result contain zero for success or non zero for fail

Abrufen der Ausgabe von Systembefehlen:

import sys.process._

val result = "your_command" !!
println("result = "+result) // result contain output from the command

Sie haben mehrere andere Optionen (Pipeline, STDOUT umleiten, an STDOUT anhängen und ...), wie Sie sehen können dieser Link .

0voto

Abhinav Sarkar Punkte 22853

Scala ist vollständig interoperabel mit Java. Sie können also die Systembefehle in Scala genauso aufrufen wie in Java. Siehe este um zu sehen, wie man Systembefehle von Java aus aufruft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X