Получение отчета о состоянии из сценария оболочки в код Java

#java #linux #shell

#java #linux #оболочка

Вопрос:

Может кто-нибудь сказать мне, как получить отчет о состоянии из сценария оболочки в код Java. Пример использования: я запускаю сценарий оболочки из кода Java, и если я получаю какую-либо ошибку в сценарии оболочки (во время выполнения), мне нужно отправить какое-либо сообщение из сценария оболочки в мой Java-код.

Итак, как я могу этого добиться.

Ответ №1:

Я уверен, что есть лучший способ, но простой способ сделать это — вывести сообщение об ошибке канала сценария оболочки в файл, который затем считывается приложением Java.

Комментарии:

1. : D. хороший … Я тоже так думал. но это действительно плохой способ сделать это …. если решение не найдено, тогда я должен следовать этому пути.

Ответ №2:

Я предполагаю, что вы используете ProcessBuilder для запуска вашего сценария оболочки.

Как только вы создадите процесс, вы можете использовать getInputStream(), который предоставит вам выходной поток из сценария оболочки, а затем просто скопируйте поток туда, куда вы хотите перейти.

Также есть вывод перенаправления, но у меня ограниченный опыт его использования. Я предполагаю, что он делает то, что я описал выше.

Ответ №3:

Вы можете использовать что-то вроде этого:

 Process proc = Runtime.getRuntime().exec("ls -la")
// To get the error code (0=success)
int outCode = proc.exitValue()
  

Если вам нужно отправить что-то из сценария в приложение, выполняющее его, вы можете сделать это, записав stdErr в сценарий и используя proc.getErrorStream в своей программе Java.