7

I want to execute the sh file from Scala application. Let's say I have createPassword.sh file and I need to invoke this sh file from Scala application and get the output back.

How can I achieve through scala application?

2 Answers 2

13

This should do the trick if the script is in the current working directory (otherwise specify the full path of the script)

import sys.process._
val result = "./createPassword.sh" !!

result is then a String containing the standard output (and standard error)

EDIT: If you want to use ProcessBuillder from Java SE7, you can also use this in scala:

  import java.io.{BufferedReader, InputStreamReader}

  val p = new ProcessBuilder("/bin/bash","createPassword.sh")
  val p2 = p.start()
  val br = new BufferedReader(new InputStreamReader(p2.getInputStream()))

  var line:String = ""
  while ({line = br.readLine();  line!= null}) {
    println(line)
  }
Sign up to request clarification or add additional context in comments.

5 Comments

probably should be "./createPassword.sh" !!
Thats true, But i neeed uses sys.process and it should not block, once the result is available ,It should be Processed
May be similar to usage of run method under process builder
@sharathchandra If you have an idea on how to do it in Java with ProcessBuilder, then just do it the same way in scala (you can also use ProcessBuilder from scala sourcecode)
@sharathchandra I added an example with ProcessBuilder
0

Given your dir has a script,

`val path = "./src/test/tests/Integration/"`

`val output = Process("sh test.sh", new File("path")).!!`

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.