Извлечение среды процесса перед выходом из командной строки или сценария командной строки, инициированных 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");