Выполнение сценариев оболочки из кода Java и добавление вывода терминала в файл .txt - PullRequest
0 голосов
/ 05 июня 2018

Я хотел бы, чтобы мой код вызывал один из двух доступных сценариев оболочки и выполнял некоторые команды, выходные данные которых будут напечатаны в файле .txt.

Пока мне удалось этого добиться(вызывая первый скрипт), но когда я пытаюсь вызвать второй скрипт, терминал не открывается и выходные данные команд не добавляются в файл .txt.

Мой код выглядит следующим образом:

File file = new File("res/script1.sh");
String absolutePath = file.getAbsolutePath();

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("open -a Terminal "+absolutePath);

После этого выполнения файл .txt содержит фразу "Hello World".

Моя первая попытка состояла в том, чтобы просто изменить /script1.sh на /script2.sh, как я думал во второмдобавит другой "Hellow World" во вторую строку файла .txt.Это не работает, так как содержимое файла остается неизменным, а терминал даже не открывается в отличие от первого случая.

Я также попытался продублировать код для двух сценариев и выполнить один илидругое основано на вводимом значении i==1 или i==2, но безуспешно.

Есть мысли, почему я не могу заставить работать второй скрипт, даже если он идентичен первому?

Код моего скрипта

#!/bin/sh
cd "$(dirname "$0")"
echo Hello World >> output.txt
exit

1 Ответ

0 голосов
/ 06 июня 2018

Вам может потребоваться запустить процессы по порядку, то есть дождаться завершения процесса, прежде чем запускать следующий процесс.Это в основном потому, что они добавляются в один файл.Чтобы процесс завершился, вы должны использовать все его выходные потоки. Эта статья объясняет проблему более подробно.

...