package demo;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class CallShell {

    private static String streamToString(final InputStream stream) throws IOException {
        final BufferedReader in = new BufferedReader(new InputStreamReader(stream));
        final StringBuilder result = new StringBuilder();
        String line = in.readLine();
        while (line != null) {
            result.append(line).append("\n");
            line = in.readLine();
        }
        return result.toString();
    }

    private static String exec(final String cmd) {
        String result = null;
        try {

            final Process execResult = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd}, null, new File("."));

            execResult.waitFor();
            result = streamToString(execResult.getInputStream());

        } catch (final Exception ex) {
            System.out.println("Exception:" + ex.getMessage());
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println(exec("echo 'call from java'"));
        System.out.println(exec("/bin/bash --version"));
        System.out.println(exec("ls  "));
        System.out.println(exec("for I in `seq 1 10` ; do echo $I ; done"));
    }
}
