5

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?

Patryk Rudnicki
  • 687
  • 1
  • 9
  • 20
sharath chandra
  • 129
  • 1
  • 2
  • 11

2 Answers2

12

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)
  }
Raphael Roth
  • 25,362
  • 13
  • 78
  • 128
0

Given your dir has a script,

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

`val output = Process("sh test.sh", new File("path")).!!`
dedpo
  • 462
  • 9
  • 28