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

标签 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,然后允许其他测试访问此变量以了解是否至少一项测试是否运行。

最佳答案

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

如果您想根据启动的 java 进程中发生的事情更改 bash 脚本中的某些内容,您有两种方法:

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

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

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

关于java - 如何通过子 Java 进程访问的 Bash 设置系统属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187704/

相关文章:

java - 无法停止前台服务 stopSelf() 和 stopForeground(true) 不起作用

java - 尝试访问图像 URL 时出现 403 错误

java - 混合后如何从.wav文件中消除噪音?

linux - 如何在其他Linux内核版本上编译ixgbe网络驱动程序

linux - 在 Linux 中执行 ls 命令

regex - Bash 中的多个多行正则表达式匹配

java - rs.getGeneratedKeys() 在 Derby 中不起作用

linux - GAWK 中的 "Is in"条件

bash - 如何从 Bash 列表中获取第一个字符串?

mysql - Bash Echo 命令在 while 循环中表现异常