在Java中調用shell腳本并傳遞參數,可以使用ProcessBuilder
類。以下是一個示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ShellCommand {
public static void main(String[] args) {
String command = "/path/to/your/script.sh";
String arg1 = "argument1";
String arg2 = "argument2";
try {
ProcessBuilder processBuilder = new ProcessBuilder(command, arg1, arg2);
Process process = processBuilder.start();
// 讀取腳本輸出
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待腳本執行完成
int exitCode = process.waitFor();
System.out.println("腳本執行完畢,退出碼:" + exitCode);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我們首先定義了要執行的shell腳本的路徑和傳遞給腳本的參數。然后使用ProcessBuilder
構建了一個進程,將腳本和參數作為構造參數傳遞給ProcessBuilder
。接下來,我們啟動進程并獲取其輸出流,然后使用BufferedReader
讀取輸出。最后,我們使用process.waitFor()
等待腳本執行完成,并獲取腳本的退出碼。
請注意,ProcessBuilder
的構造函數可以接受一個字符串數組,數組的每個元素代表一個參數。