There are two things to note right off the bat….
- The shell script runs fine manually
- A simple shell script (echo hello) that I wrote runs fine through java
So I have a shell script that I’m attempting to run through a Java process.
File sqlF = new File("path to deploy script");
Process proc = rt.exec(sqlF + "/deploy.sh");
proc.waitFor();
System.out.println(proc.exitValue());
When I run this code I get an ambiguous return value of “1”.
Here’s the shell script (because I imagine the issue may stem from here):
#!/bin/bash
mysql -u XXXX -h XXXXX < XXXXX.sql
mysql -u XXXX -h XXXXX database < DEPLOY-HELPER.sql
Any ideas as to why this would not execute properly from Java?
If you want to run a shell script you must explicitly invoke the shell and pass it the name of the script as an argument, as in
Neither
Runtime.exec()norProcessBuilderknow how to execute shell scripts themselves, they only know how to execute binary executables.