Reputation: 876
I work with Bash script. My bash script is
#!/bin/bash
function aa(){
echo "Run";
su - postgres -c "shp2pgsql -I -s 4269 /tmp/gismanager/Wards.shp ff | psql postgis;";
echo "Run";
return 0;
}
aa;
when this script run by linux result is Run Run
but from java result is Run
my java code is
public static void execShellCmd(String path) {
try {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(path);
BufferedReader buf = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = buf.readLine()) != null) {
System.out.println("exec response: " + line);
}
} catch (Exception e) {
System.out.println(e);
}
}
Can anybody help me?
Upvotes: 0
Views: 1413
Reputation: 123
Have you tried to capture the OutputStream and ErrorStream?
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
InputStream inputStream = process.getInputStream();
InputStream errorStream = process.getErrorStream();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorStream));
Upvotes: 1