是否可以从csh变量中的java程序捕获system.out.print?

时间:2009-05-07 11:25:40

标签: java csh

我知道这样做很蹩脚。我们需要捕获在调用shell脚本中的Java程序中动态生成的字符串,然后再使用它。

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

我们考虑过使用putenv / setenv将它导出到环境变量的选项......这是一个更好的选择吗?如果是这样如何使用它?

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

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

感谢。

2 个答案:

答案 0 :(得分:2)

你应该能够像使用bash那样使用反引号语法来使用command substitution(现在在bash中,建议使用更多可用的$ -syntax)。像这样:

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

或类似的东西

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

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

答案 1 :(得分:0)

从第一个答案延伸:

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

假设MyProgram输出超过一行,你想要捕获的是什么。

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

希望它有所帮助: - )