Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数从Java程序传递到shell脚本_Java_Jsp_Shell_Servlets - Fatal编程技术网

将参数从Java程序传递到shell脚本

将参数从Java程序传递到shell脚本,java,jsp,shell,servlets,Java,Jsp,Shell,Servlets,我正在开发一个web应用程序,其中使用JSP作为前端,shell脚本作为后端。因此,我将通过Java程序(业务层)将参数从输入JSP传递到shell脚本。我想知道如何将参数从Java传递到shell脚本并执行相同的操作。谢谢。您可以使用ProcessBuilder将参数传递到shell脚本 ProcessBuilder pb = new ProcessBuilder("shellscript", "myArg1", "myArg2"); Map<String, String> env

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

您可以使用
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();
ProcessBuilder pb=newprocessbuilder(“shell脚本”、“myArg1”、“myArg2”);
Map env=pb.environment();
环境看跌期权(“VAR1”、“myValue”);
环境移除(“其他变量”);
环境put(“VAR2”,环境get(“VAR1”)+“后缀”);
pb.目录(“myDir”);
进程p=pb.start();

我已经找到了答案,我认为这可能会对人们有所帮助。 请参考代码

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;

}

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

类似的?使用ProcessBuilder和方法传递参数。感谢您的回复。我有一个问题,“myArg1”和“myArg2”是传递给shell脚本的参数吗。如果是这样,我就不会使用VAR1和VAR2。另外,如果我需要借助“myArg1”和“myArg2”在shell脚本中进行一些处理并获得一些结果,我将如何将该结果传输回Java程序。我在许多论坛上对此进行了分析,但我无法找到答案。你能帮帮我吗?我已经找到了答案,我想这可能会对人们有所帮助