我在linux上用java运行一个shell文件,但是shell文件里面有些值是未知的,需要客户端传值过来,先把shell文件里面的值填充之后再执行,现在不知道怎么用java传值给shell文件,请高手指点!!!!!!!!!!!!!!

解决方案 »

  1.   

    两种方式,
    第一种,是修改shell脚本使之能支持通过命令行传入参数方式,你可以通过java生成 “shell命令 参数1 参数2 …… ”shell命令,然后交由linux shell执行。
    第二种,java.io写shell脚本文件,然后执行 "chmod +x shell脚本文件名" shell命令将所写的脚本文件设为可执行(注意,这种情况你的程序权限必须够,比如你的程序必须有足够权限的用户启动,否则无法执行对你脚本可执行的授权),最后执行你新生成的shell脚本。
    在java中运行操作系统shell脚本的代码片段如下:
    Runtime R=Runtime.getRuntime(); //获取当前运行环境
    Process P = R.exec(cmd); //启动一个进程运行你的脚本,cmd就是你要在linux shell中的命令
    InputStream in = P.getInputStream(); //获取脚本产生数据流 
    InputStream err = P.getErrorStream(); //获取错误数据流
    int exitcode=0; //退出码,如果你的脚本定义退出码
    try{
      exitcode=P.waitFor(); //获得进程的退出码
    }catch (InterruptedException e){
      e.printStackTrace();
    }