Подтвердить что ты не робот

Выдача собственных системных команд в Scala

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

Я просмотрел "Программирование в Scala". Я посмотрел в O'Reilly "Программирование Scala". У меня есть несколько комбинаций терминов. Пока не повезло. Может ли кто-нибудь дать мне пример или указать мне на ресурс, где я могу найти пример?

4b9b3361

Ответ 1

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

Ответ 2

import scala.sys.process._

val vimLocation: String = "whereis vim" !!

ссылка

Ответ 3

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

Ответ 4

Вы можете сделать это с помощью 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 и...), вы можете увидеть эту ссылку.

Ответ 5

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