Что эквивалентно os.system в Scala? - PullRequest
1 голос
/ 01 октября 2019

Я пишу программу scala, в которой я бы хотел выполнить системную команду, прочитать входные данные из stdin и записать их выходные данные в stdout. (Таким образом, в основном, как и при запуске команды в оболочке. "

В python os.system("command") имеет такое поведение. Например, os.system("python") открывает еще один Python REPL при запуске.

ВScala, запускающий "python" !!, кажется, запускает процесс и немедленно останавливается. Какой самый простой способ сделать эквивалент os.system в Scala? Я чувствую, что это, вероятно, можно сделать с помощью scala.sys.process.ProcessIO, но я не былгде-либо найти четкие примеры того, как это можно сделать.

1 Ответ

2 голосов
/ 01 октября 2019

Пока вам не нужно это для работы в Scala REPL, тогда !< должно быть всем, что вам нужно.

%> cat so.sc
import sys.process._
object Obj extends App {
  Seq("python3","-i").!<
}
%> scalac so.sc
%> scala Obj
Python 3.6.8 (default, Aug 20 2019, 17:12:48) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 4
>>> print('x: ' + str(x))
x: 4
>>> <CTL-D>
%> 

Python не вызывается в среде терминала / TTYпоэтому опция -i необходима, чтобы перевести ее в интерактивный режим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...