javagc
javagc

Reputation: 876

Run Bash Script File from JAVA

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

Answers (1)

Thomas K
Thomas K

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

Related Questions