Bash Script in Java ausführen

Viktim

Bekanntes Mitglied
Hallo,

Ich brauche Hilfe um Bash Scripte in Java auszuführen.
Ich hab schon ein bisschen gegoogled aber geholfen hat mir das nicht wiklich...
zum Testen hab ich mal folgendes gemacht:
Java:
import java.io.IOException;

public class MainKlasse {
  public static void main(String[] args) {

    Runtime shell = Runtime.getRuntime();
    try {
      shell.exec("echo Hallo");
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}
es wirft nichtmal eine Fehlermeldung, aber passieren tut dabei auch nichts...
falls das hilft, ich benutze die IDE Eclipse.
 
Der Befehl wird wohl ausgeführt, du kannst den Output nur nicht sehen.
Versuchs mal mit einem ProcessBuilder. Beispiel:
Java:
        String[] command = { "ping", "google.de" };
        ProcessBuilder pb = new ProcessBuilder(command);
        pb.redirectOutput(Redirect.INHERIT);
        pb.redirectError(Redirect.INHERIT);

        try {
            Process p = pb.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
Mit Process.getInputStream kannste dir ja den Stream holen. Den dann in ein String speichern:
Java:
import java.io.IOException;
import java.lang.ProcessBuilder.Redirect;

public class MainKlasse {
    public static void main(String[] args) {

        String[] command = { "ping", "google.de" };
        ProcessBuilder pb = new ProcessBuilder(command);

        try {
            Process p = pb.start();
            String output = convertStreamToString(p.getInputStream());
            System.out.println("Ausgabe: "+output);
        } catch (IOException e) {
            e.printStackTrace();
        }
      
       
    }
   
    static String convertStreamToString(java.io.InputStream is) {
        java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    }
}
 

Zurück
Oben