Как я могу вызвать сценарий оболочки из Java-программы? - PullRequest
3 голосов
/ 02 июля 2011

Я использую Ubuntu 10.04 с затмением. Я создал сценарий оболочки, exam.sh:

#!/bin/bash 
echo "Hello World"

с chmod 755 экзамен.ш

В командной строке я могу выполнить ./exam.sh // ok command showing me Hello World

Я хочу вызвать этот exam.sh с кодом Java, это мой код Java:

public static void main(String[] args) {    
Runtime r = Runtime.getRuntime();
Process p = null;
String cmd[] = {"/bin/bash","cd","/home/erdi/Desktop", ".","/","exam.sh"};

try {
    p = r.exec(cmd);
    System.out.println("testing...");//ok
} catch (Exception e) {
    e.printStackTrace();
}
}

Это не работает, где я ошибся? Да, я знаю, что могу искать по Google, но я не нашел ответа на свою проблему. В нем приведены инструкции и руководства по этой функции, но я не нашел ответа.

1 Ответ

5 голосов
/ 02 июля 2011

Попробуйте вместо этого:

cmd[] = {"/bin/bash", "/home/ercan/Desktop/exam.sh"};

Вы можете просто вызвать bash непосредственно из сценария оболочки. Чтобы запустить командную строку (например, cd), вам необходимо использовать переключатель -c.

Если вам нужен рабочий каталог скрипта для вашего рабочего стола, вы можете использовать другую перегрузку Runtime.exec:

Process proc = runtime.exec(cmd, new String[0], new File("/home/ercan/Desktop"));

В качестве альтернативы класс ProcessBuilder делает выполнение процессов более приятным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...