Reputation: 475
i am trying to run this java code that calls the shell script on runtime.
when i run the script in terminal i am passing argument to script
code:
./test.sh argument1
java code:
public class scriptrun
{
public static void main(String[] args)
{
try
{
Process proc = Runtime.getRuntime().exec("./test.sh");
System.out.println("Print Test Line.");
}
catch (Exception e)
{
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
How to pass argument for script in java code?
Upvotes: 2
Views: 17262
Reputation: 11
Here is something very simple you can try
public class JavaRunCommandExample {
public static void main(String[] args) {
Runtime r = Runtime.getRuntime();
Process p = null;
String cmd[] = {"./test.sh","argument1"};
try {
p = r.exec(cmd);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Upvotes: 0
Reputation: 103777
The preferred way to create processes in recent versions of Java is to use the ProcessBuilder
class, which makes this very simple:
ProcessBuilder pb = new ProcessBuilder("./test.sh", "kstc-proc");
// set the working directory here for clarity, as you've used a relative path
pb.directory("foo");
Process proc = pb.start();
But if you do want to/need to use Runtime.exec
for whatever reason, there are overloaded versions of that method that allow the arguments to be specified explicitly:
Process proc = Runtime.getRuntime().exec(new String[]{"./test.sh", "kstc-proc"});
Upvotes: 4