Tony
Tony

Reputation: 1233

Issuing native system commands in Scala

I want to issue a native system command from a Scala program, and perhaps trap the output. ("ls" comes to mind. There may be other ways to get directory information without issuing the command, but that's beside the point of my question.) It would correspond to os.system(...) in Python.

I've looked in "Programming in Scala". I've looked in O'Reilly's "Programming Scala". I've Googled several combinations of terms. No luck yet. Can someone out there give me an example, or point me at a resource where I can find an example?

Upvotes: 28

Views: 10350

Answers (5)

Daniel C. Sobral
Daniel C. Sobral

Reputation: 297175

Best way to do that is to use scala.sys.process.

Upvotes: 31

Saeed Zarinfam
Saeed Zarinfam

Reputation: 10180

You can do it using sys.process easily:

Executing system commands and getting their status code (exit code):

import sys.process._

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

Getting output from system commands:

import sys.process._

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

You have several other options (pipeline, Redirect STDOUT, Append to STDOUT and ...), you can see this link.

Upvotes: 1

Johan Prinsloo
Johan Prinsloo

Reputation: 1188

import scala.sys.process._

val vimLocation: String = "whereis vim" !!

reference

Upvotes: 4

Abhinav Sarkar
Abhinav Sarkar

Reputation: 23782

Scala has complete interoperability with Java. So you can call the system commands from Scala as you would from Java. See this to see how to call system commands from Java.

Upvotes: 0

Greg Hewgill
Greg Hewgill

Reputation: 993045

Scala is not different from Java in this area, since you can call any Java API functions using Scala's interop features. See for example, java.lang.ProcessBuilder.

Upvotes: 1

Related Questions