2012-06-18 70 views
0

我正在开发一个web应用程序,其中我使用JSP作为我的前端和shell脚本作为我的后端。因此,我将通过Java程序(业务层)将输入JSP中的参数传递给shell脚本。我想知道如何能够将参数从Java传递到shell脚本并执行相同的操作。谢谢。将参数从Java程序传递到shell脚本

+0

与此类似? http://stackoverflow.com/questions/5711084/java-runtime-getruntime-getting-output-from-executing-a-command-line-program – tjg184

+0

使用ProcessBuilder与[命令](http://docs.oracle。 com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html#command(java.util.List))方法来传递参数。 –

回答

1

您可以使用ProcessBuilder将参数传递给shell脚本。

ProcessBuilder pb = new ProcessBuilder("shellscript", "myArg1", "myArg2"); 
Map<String, String> env = pb.environment(); 
env.put("VAR1", "myValue"); 
env.remove("OTHERVAR"); 
env.put("VAR2", env.get("VAR1") + "suffix"); 
pb.directory("myDir"); 
Process p = pb.start(); 
+0

感谢您的回复。我有一个问题,“myArg1”和“myArg2”是传递给shell脚本的参数。如果是这样的话,我不会使用VAR1和VAR2。另外,如果我需要在“myArg1”和“myArg2”的帮助下在shell脚本中进行一些处理并获得一些结果,我将如何将该结果传回给我的Java程序。我曾在很多论坛上分析过这个问题,但我无法找到答案。你可以帮我吗。 – User

+0

我已经想出了答案,我认为这可能对人有帮助 – User

1

我已经想出了答案,我认为这可能对人有帮助。 请参阅代码

public static BufferedReader process() throws IOException 
{ 
    ProcessBuilder pb = new ProcessBuilder("/home/XXXX/Desktop/request.sh","Apple"); 
    String line; 
    Process process=pb.start(); 
    java.io.InputStream is = process.getInputStream(); 
    InputStreamReader isr = new InputStreamReader(is); 
    BufferedReader br = new BufferedReader(isr); 

    while ((line = br.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
    return br; 

} 

这里的“苹果”是shell脚本的输入参数,将存储在$ 1(环境变量),这可从shell脚本访问,当有什么需要是从shell脚本发送到Java,从shell脚本回显并从Java中获得process.inputStream() ..

相关问题