1

我知道这是蹩脚的方式来做到这一点。我们需要在调用 shell 脚本中捕获一个在 Java 程序中动态生成的字符串,然后在以后使用它。

这也将在现有的 csh 文件中完成。

我们考虑了使用 putenv/setenv 将其导出到环境变量的选项......这是一个更好的选择吗?如果有怎么用?

网上似乎缺乏关于如何有效使用 sentenv() 或 putenv() 以及为此导入哪些库的示例代码。

具有 getenv() 方法的系统类不显示我的 putenv() 或 setenv()。非常感谢任何帮助。

谢谢。

4

2 回答 2

2

您应该能够像在 bash 中一样使用反引号语法(在当今的 bash 中,建议使用更有用的 $-syntax ),只使用命令替换。像这样:

$ set A=`java MyProgram`
$ echo $A

或非常相似的东西

你不能使用环境;使用它无法“向后”交流;子进程不能改变父进程的环境。

更新:在示例中添加了“set”关键字,d'oh。

于 2009-05-07T11:30:53.647 回答
0

从第一个答案扩展:

你可能想这样做: $ A= java MyProgram | grep <something> $ echo $A

假设 MyProgram 输出不止一行,您想捕获的内容在哪里。

如果java程序使用System.err.print...而不是System.out.print....则需要增强为$A=java MyProgram 2>&1 | grep <something>

希望能帮助到你 :-)

于 2009-05-07T11:49:46.907 回答