【问题标题】:Run Bash Script File from JAVA从 JAVA 运行 Bash 脚本文件
【发布时间】:2013-10-24 13:28:25
【问题描述】:

我使用 Bash 脚本。我的 bash 脚本是

#!/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;

当这个脚本由 linux 运行的结果是 Run Run 而从 java 运行的结果是 Run

我的java代码是

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);
    }
}

谁能帮帮我?

【问题讨论】:

标签: java bash function postgresql shell


【解决方案1】:

您是否尝试过捕获 OutputStream 和 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    相关资源
    最近更新 更多