【问题标题】:Is there any way I can call my shell script in Java and set values to the shell script variables via Java class有什么方法可以在 Java 中调用我的 shell 脚本并通过 Java 类为 shell 脚本变量设置值
【发布时间】:2020-06-21 05:48:12
【问题描述】:

我有一个 shell 脚本文件,其中定义了三个变量。我需要在 java 类中为这些变量设置值,这意味着,我需要访问我的 Java 类中的 shell 脚本文件,然后我需要访问这三个变量,然后我需要设置这些变量的值来自 Java 的三个变量。我不确定如何达到这个要求。我的 shell 脚本文件位于 windows D:/. 这是我的shell脚本代码:

path=`xxx`
echo "$path"

Src
Dest
Env

我需要设置SrcDestEnv的值

【问题讨论】:

  • 一般我们使用脚本启动Java应用程序并传递必要的参数。做同样的传递那些定义的值Java主文件。 java -jar Main.java argument1 参数 2
  • 感谢您的建议。由于我对 shell 脚本非常陌生,您能否在代码方面建议上述解决方案。提前致谢
  • 您的环境是什么样的?您是否能够在您的 Windows 平台上执行该 bash 脚本(例如,使用 git bash、cygwin 等)?
  • 是的,我可以使用 git bash 在我的 windows 平台上执行 bash 脚本。
  • 网上可以找到很多

标签: java shell sh


【解决方案1】:

进程从其父进程(即运行它的进程)继承所有环境变量的副本。

所以如果你想在 Java 程序中设置环境变量并在 shell 脚本中使用它们,你需要 Java 程序来运行 shell 脚本。

使用 java.lang.ProcessBuilder 类可以做到这一点,但非常不寻常。你确定这是你想要的吗?

如果您需要 java 程序获取变量的值,然后在 shell 脚本中使用它们,您可以让 java 程序将值写入文件,然后从脚本中的文件中读取它们,这可能更简单、更容易和更便携。

【讨论】:

  • 感谢 cmets。如果我们使用 ProcessBuilder,我想知道我们如何实现上述目标?如果我使用 ProcessBuilder 有什么限制?
  • 使用 ProcessBuilder,您将需要调用 git bash 命令(或您平台上可用的任何其他 bash 解释器),并将脚本的路径作为参数,并且之前依赖于环境变量使用 System.setEnv 设置或通过 processBuilder.environment() 指定环境变量。检查the ProcessBuilder javadoc,它应该告诉你所有你需要知道的
猜你喜欢
  • 2012-03-13
  • 2010-10-04
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
相关资源
最近更新 更多