Извлечение среды процесса перед выходом из командной строки или сценария командной строки, инициированных Java.

Я хотел бы прочитать / сбросить переменные окружения процесса (файл.sh, вызов командной строки и т. Д.), Который я инициирую изнутри Java.

Например, у меня есть сценарий оболочки, который запускает и устанавливает переменную среды:

#!/bin/bash
export blah='really boring'

Я вызываю этот сценарий оболочки из родительской java-программы, но перед завершением работы сценария оболочки я бы хотел извлечь значение $ blah из его среды. Это позволило бы мне передавать информацию обратно вызывающей Java-программе, кроме кода возврата и потоков stdout / stderr.

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

Из прочтения различных документов по выходу POSIX, есть ловушки on_exit, которые я мог бы разместить в процессе, но мне было интересно, есть ли способ сделать это, используя достаточно чистую Java. Может ли JNR помочь?

Любые другие идеи были бы хорошими, чем больше кроссплатформенность, тем лучше, например, обертывание команд / оболочки, вызванных большим количеством UNIXy, или других библиотек, кроме стандартной библиотеки инициализации процесса groovy/java.

1 ответ

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

runtime.exec("bash", "-c", ". your-script.sh ; export > export.dump");
Другие вопросы по тегам