Как запустить bash-скрипт или программу из Java

Способ весьма простой, можно даже получать вывод на консоль:

Process p = Runtime.getRuntime().exec("./some_linux_script.sh");
System.out.println("Output: ");

BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
	String line = null;
	while ((line = br.readLine()) != null) {
		System.out.println(line);
	}

Проблема с этим способом в том, что вывод от stderr остаётся висеть в буфере и блокирует выполнение программы при насыщении этого буфера. Поэтому лучше применять другой способ, который появился в Java 1.5 и позволяет перенаправить stderr в стандартный поток вывода. В этом случае придётся читать только из одного буфера и программа не будет блокироваться:

ProcessBuilder builder = new ProcessBuilder("./some_linux_script.sh");  
builder.redirectErrorStream(true);  
Process process = builder.start();  
		  
try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); ) {
	String line = null;
	while ((line = reader.readLine()) != null) {  
	    System.out.println ("Stdout: " + line);  
	}  
}
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.