我想将值保存在此脚本中的变量中:
#!/bin/sh
filename=$1
var= $filename | sed 's/\([A-Z]\)/ \1/g';
return var;
(Firstable,我不确定它是否正确),并且在thar之后,获取此值并在我的Java程序中使用它,如下所示:
Process s = Runtime.getRuntime().exec("./CreateTitle.sh "+filename);
OutputStream exitVal = s.getOutputStream();
System.out.println("Process exitValue: " + exitVal.toString());
我认为我错了一些东西,因为在上一篇sysout
中,我没有得到希望的结果,但是这一个:
Process exitValue: java.io.BufferedOutputStream@3e25a5
有任何帮助吗? 提前致谢
答案 0 :(得分:3)
它不是你需要的OutputStream
。这是您需要的代码
BufferedReader b = new BufferedReader(new InputStreamReader(s.getInputStream()));
String output = "", line = "";
while((line = br.readLine()) != null) {
output += line;
}
System.out.println(output);
你也应该看看Mark的答案。他用shell脚本解决了这个问题。
编辑:以下是更改后的脚本
#!/bin/sh
filename=$1
var = $filename | sed 's/\([A-Z]\)/ \1/g';
echo var;
我对shell脚本不太满意。如果这里有什么不妥,有人会纠正我。
答案 1 :(得分:2)
This文章会对您有所帮助。
答案 2 :(得分:0)
基本上你不能这样做。
shell环境变量是该shell的局部变量,生成它的进程无法看到shell中的数据,除了返回代码是一个整数。
您可以将shell变量写入stdout,然后Java可以读取它。
此外,您的代码会打印出正确的流地址 - 获取流中需要打开它并从流中读取的值
在您的示例中,我将使用Java的正则表达式类。