Как запустить сценарий оболочки с аргументами на Java: несколько методов с примерами кода

Вот несколько методов, которые можно использовать для запуска сценария оболочки с аргументами из Java:

Метод 1: использование класса ProcessBuilder

import java.io.IOException;
public class ShellScriptLauncher {
    public static void main(String[] args) {
        try {
            ProcessBuilder processBuilder = new ProcessBuilder("sh", "script.sh", "arg1", "arg2");
            Process process = processBuilder.start();
            int exitCode = process.waitFor();
            System.out.println("Shell script executed with exit code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Метод 2: использование Runtime.exec()

import java.io.IOException;
public class ShellScriptLauncher {
    public static void main(String[] args) {
        try {
            String[] command = {"sh", "script.sh", "arg1", "arg2"};
            Process process = Runtime.getRuntime().exec(command);
            int exitCode = process.waitFor();
            System.out.println("Shell script executed with exit code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Метод 3: использование ProcessBuilderс переменными среды

import java.io.IOException;
import java.util.Map;
public class ShellScriptLauncher {
    public static void main(String[] args) {
        try {
            ProcessBuilder processBuilder = new ProcessBuilder("sh", "script.sh", "arg1", "arg2");
            Map<String, String> environment = processBuilder.environment();
            environment.put("VAR1", "value1");
            environment.put("VAR2", "value2");
            Process process = processBuilder.start();
            int exitCode = process.waitFor();
            System.out.println("Shell script executed with exit code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Обратите внимание, что в приведенных выше примерах «script.sh» представляет собой путь к вашему сценарию оболочки, а «arg1» и «arg2» — это аргументы, передаваемые в сценарий.