I am trying to run a shell script from a Java code. At the moment I am providing data manually in the script, but I would like to be able to provide the variables from the Java
Use shell variables in the script, set them in Java through the environment:
import java.util.Map;
class so1 {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("/home/...sh");
Map<String, String> env = pb.environment();
env.put("VAR1", "something");
Process p = pb.start();
p.waitFor();
System.out.println("Script executed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
}
In the script:
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="SPARQL CREATE GRAPH $VAR1;"&
You can pass params to your shell script and use them inside de script, The Class ProcessBuilder have a constructor that take the command to execute and the list of parameters to pass to the executable :
ProcessBuilder(String... command)
you have to pass params like this :
ProcessBuilder pb = new ProcessBuilder("/home/najib/upload.sh",param1,param2,param3);
inside the script param1 is $1 , param2 is $2 , and param3 is $3 (you can pass in the constructor as many arguments as you want )