我现在知道如何使用java 调用linux 命令 但是不知道如何传递参数 Process proc = Runtime.getRuntime().exec("这些linux命令"); 然后以流的形式 获取返回值 现在不清楚的是如何传递参数 
例如: 
现在linux有一个脚本 NavRegister  没有任何后缀名,就这样的一个文件 里面需要传递3个参数  p1 p2 p3 然后根据这个参数返回给我一个信息 我如何执行这个命令的时候传递这个参数???? ~~谢谢 

解决方案 »

  1.   

    是public Process exec(String [] cmdArray, String [] envp,File dir);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp是执行的环境,,envp中使用的是name=value的方式。File dir是执行目录。 Process process = null;
            String[] commandToExecute = null;
            try
            {
                // execute the command with full property replacement
                commandToExecute = getCommand(properties);
                process = runtime.exec(commandToExecute, processProperties, processDirectory);
    }
    获取返回使用process.getInputStream()即可
      

  2.   


    linux下  tomcat 调用 执行进程有什么要注意的地方吗?我没执行成功啊,到执行进程那就不往下走了
      

  3.   

    如果是命令参数的话,runtime.exec(commandToExecute, processProperties, processDirectory);这样就可以了。有的时候,shell执行的过程中有需要输入的地方,这个时候必须根据Process取得InputStream,然后通过流与shell进行交互。
    至于你说的执行不成功,我觉得有两个方面你需要检查一下:
    1.不用java,直接在控制台中执行你的shell脚本或者命令,是否成功?
    2.你的home目录下有.bashrc文件(除此以外,还有其他的配置文件会影响shell的执行时环境变量。.bashrc是最常见的),.bashrc文件中设置了你的shell环境变量。可能是因为遗失了这些环境变量的设置引起你用java调用shell失败。如果1可以执行成功,则基本可以确定是这些个环境变量的原因了。