scala - stand - motion minecraft
EmisiĆ³n de comandos del sistema nativo en Scala (5)
Quiero emitir un comando del sistema nativo desde un programa de Scala, y quizás interceptar la salida. ("ls" me viene a la mente. Puede haber otras formas de obtener información del directorio sin emitir el comando, pero eso no viene al caso de mi pregunta). Correspondería a os.system (...) en Python.
He mirado en "Programación en Scala". He mirado en "Programación Scala" de O''Reilly. He buscado en Google varias combinaciones de términos. Aún no hay suerte. ¿Puede alguien por ahí darme un ejemplo o señalarme un recurso donde pueda encontrar un ejemplo?
La mejor manera de hacerlo es usar scala.sys.process .
Puedes hacerlo usando sys.process
fácilmente:
Ejecutando comandos del sistema y obteniendo su código de estado (código de salida):
import sys.process._
val result = "your_command" !
println("result = "+result) // result contain zero for success or non zero for fail
Obteniendo salida de los comandos del sistema:
import sys.process._
val result = "your_command" !!
println("result = "+result) // result contain output from the command
Tiene otras opciones (canalización, Redirigir STDOUT, Anexar a STDOUT y ...), puede ver este enlace .
Scala no es diferente de Java en esta área, ya que puede llamar a cualquier función de la API de Java usando las funciones de interoperabilidad de Scala. Ver por ejemplo, java.lang.ProcessBuilder
.
Scala tiene completa interoperabilidad con Java. Así que puedes llamar a los comandos del sistema desde Scala como lo harías desde Java. Vea this para ver cómo llamar a los comandos del sistema desde Java.
import scala.sys.process._
val vimLocation: String = "whereis vim" !!