【发布时间】:2014-07-25 08:14:19
【问题描述】:
我正在编写 Java 控制台应用程序,它从环境变量 (Linux) 中获取输入参数。要设置这些变量,我的应用程序必须“获取”shell 脚本。我可以使用 Runtime.exec() 或 ProcessBuilder“获取”脚本,但我不知道如何访问创建的环境变量。
有我的shell脚本(set_env.sh):
#!/bin/csh
setenv MY_DB DB_NAME
有 Java 代码可以“获取”上述脚本:
ProcessBuilder pb = new ProcessBuilder("csh", "-c", "'source set_env.sh'");
Process p = null;
try {
p = pb.start();
p.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
我如何才能访问创建的 MY_DB 变量,或者我的问题有其他解决方案吗?
任何帮助将不胜感激。 先感谢您。
好的,伙计们。感谢您的回答。有我的临时解决方案。我编写了另一个脚本,它生成“源”并回显创建的变量。在 Java 代码中,我正在执行它,读取进程的输入流并解析它们。
【问题讨论】:
-
不知道我明白了。你会发布一些代码来显示你做了什么以及你卡在哪里了吗?
-
这是一个非常糟糕的设计。您应该编写一个包装脚本来获取 shell 脚本,然后执行您的 Java 程序。实现 shell 语法和语义不是 Java 或应用程序的事情。