Выдача собственных системных команд в Scala - PullRequest
26 голосов
/ 17 июня 2010

Я хочу выполнить собственную системную команду из программы Scala и, возможно, перехватить вывод.(На ум приходит «ls». Могут быть и другие способы получить информацию о каталоге без выполнения команды, но это не относится к моему вопросу.) Это соответствует os.system (...) в Python.

Я посмотрел в "Программирование в Scala".Я посмотрел в «Программирующей Scala» О'Рейли.Я погуглил несколько комбинаций терминов.Пока не повезлоМожет ли кто-нибудь дать мне пример или указать на ресурс, где я могу найти пример?

Ответы [ 5 ]

29 голосов
/ 18 июня 2010

Лучший способ сделать это - использовать scala.sys.process .

4 голосов
/ 18 июня 2010
import scala.sys.process._

val vimLocation: String = "whereis vim" !!

ссылка

1 голос
/ 04 октября 2015

Вы можете сделать это, используя sys.process легко:

Выполнение системных команд и получение их кода состояния (код выхода):

import sys.process._

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

Получение выходных данных от системных команд:

import sys.process._

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

У вас есть несколько других опций (конвейер, перенаправление STDOUT, добавление к STDOUT и ...), вы можете увидеть эту ссылку .

1 голос
/ 17 июня 2010

Scala ничем не отличается от Java в этой области, поскольку вы можете вызывать любые функции Java API, используя функции взаимодействия Scala.См. Например, java.lang.ProcessBuilder.

0 голосов
/ 17 июня 2010

Scala имеет полную совместимость с Java. Таким образом, вы можете вызывать системные команды из Scala, как из Java. См. this , чтобы узнать, как вызвать системные команды из Java.

...