# Bash Script  in Java ausführen



## Viktim (25. Jan 2016)

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:

```
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.


----------



## Tarrew (25. Jan 2016)

Der Befehl wird wohl ausgeführt, du kannst den Output nur nicht sehen.
Versuchs mal mit einem ProcessBuilder. Beispiel:

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


----------



## VfL_Freak (25. Jan 2016)

Moin,

hilft Dir das weiter?
http://www.wsoftware.de/practices/proc-execs.html

Gruß Klaus


----------



## Viktim (25. Jan 2016)

Dankeschön, hat geholfen


----------



## Viktim (25. Jan 2016)

@Tarrew wenn ich den Output aus deinem Beispiel in eine Variable speichern möchte, wie mach ich das dann?


----------



## Tarrew (25. Jan 2016)

Mit Process.getInputStream kannste dir ja den Stream holen. Den dann in ein String speichern: 

```
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() : "";
    }
}
```


----------



## Viktim (25. Jan 2016)

ahhh ok, vielen dank


----------

