如何通过子Java进程可访问的Bash设置系统属性

时间:2019-01-14 19:10:22

标签: java linux bash

在Java中,我可以设置并获取系统属性

System.setProperty("key","value");
String value = System.getProperty("key"); 

,我猜该属性是在Java进程级别设置的,但是我需要在更高级别上设置的属性,它是运行我开发的某些Java测试的bash进程,我不能使用Java系统属性,因为该值不会在我的测试运行中持续存在。

有没有一种方法可以在bash级别上设置系统属性,以运行子Java进程可以访问的测试。例如,我知道可以使用Java在Linux机器上获取用户名。

String userName = System.getProperty("user.name");

所以我想知道是否存在至少在运行Java测试的Bash级别上设置我自己的属性的高级方法。

修改

基本上我想要一个变量ranAtLeastOneTest,然后在运行第一个测试后将此变量设置为true,然后允许其他测试访问此变量,以了解是否至少运行了一个测试。

2 个答案:

答案 0 :(得分:0)

只能为自己的进程及其子进程设置环境变量。子进程无法更改环境变量,并且父进程可以看到此更改。

如果要基于已启动的Java进程中发生的事情在bash脚本中进行更改,则有两种方法:

  • java进程以特定的退出代码退出。例如0(零)表示至少进行了一次测试,而1表示未进行任何测试。 bash脚本可以对退出代码起作用。

  • bash脚本监视由Java测试编写的输出。 (例如,将Java输出写入文件,然后bash脚本随后检查输出(grep等)。

如果bash脚本以其中一种方式检测到某些特殊情况,则它可以在启动下一个Java进程时更改环境变量或使用另一个-Dxxx=yyy参数。

答案 1 :(得分:0)

好像我也可以在bash进程中设置环境变量并从Java子进程访问它。

Java system properties and environment variables