我知道这样做很蹩脚。我们需要捕获在调用shell脚本中的Java程序中动态生成的字符串,然后再使用它。
这也是在现有的csh文件中完成的。
我们考虑过使用putenv / setenv将它导出到环境变量的选项......这是一个更好的选择吗?如果是这样如何使用它?
网上似乎缺乏关于如何有效使用sentenv()或putenv()以及导入哪些库的示例代码。
具有getenv()方法的系统类不显示我的putenv()或setenv()。任何帮助都非常感谢。
感谢。
答案 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>
希望它有所帮助: - )