如何使用java将参数传递给shell脚本?

时间:2014-06-27 11:27:27

标签: java shell

我编写了一个调用shell脚本的代码:

 ProcessBuilder pb2=new ProcessBuilder("/home/abhijeet/sample1.sh");
 Process script_exec = pb2.start();
 pb2.redirectError();

代码适用于我,因为它执行脚本。

这个脚本需要两个参数1:输入文件2:seqs,格式如下:

 sample1.sh -ip=abc.txt --seqs=20

Shell脚本是交互式的,它要求许多参数,所以我已经改变了它的代码,我将这些值作为争论传递给它。所以完整的格式应该是:

  

db = abc outformat = 1 threads = 10 sample1.sh --ip = abc.txt --seqs = 20

那么如何使用java执行此脚本?有没有其他方法可以使用java调用交互式脚本?

3 个答案:

答案 0 :(得分:1)

我建议使用Apache Commons Exec,它有助于在多平台环境中运行外部进程。

以下是教程:http://commons.apache.org/proper/commons-exec/tutorial.html

答案 1 :(得分:1)

只需传递ProcessBuilder构造函数中的参数即可。像这样:

ProcessBuilder pb2=new ProcessBuilder("/home/abhijeet/sample1.sh", "-ip=abc.txt", "--seqs=20");

您还可以使用List<字符串>代替。

答案 2 :(得分:1)

你可以试试这个:

 ProcessBuilder pb2=new ProcessBuilder("/home/abhijeet/sample1.sh --ip=abc.txt --seqs=20");
 Process script_exec = pb2.start();
 OutputStream in = script_exec.getOutputStream();
 in.write("abc".getBytes());
 in.write("1".getBytes());
 in.write("10".getBytes());
 in.flush();
 in.close();

此代码将abc,1和10写入处理输入。