2012-02-21 86 views
0

我正在使用cygwin和java运行shell脚本。如何在进程中编写命令生成器

ProcessBuilder pb =new ProcessBuilder 
("sh", "app.sh", "ib2", "12", "11", "AK-RD", "02.20", "D:\\cygwin\\bin\\test\\delta"); 

我的脚本正在运行,当我硬编码参数。我想通过文本框的值传递这些参数。

如何做到这一点。

String cmmd[] = new String[8]; 
     cmmd[0] ="\"sh\""; 
     cmmd[1] ="\"app.sh\""; 
     cmmd[2] ="\""+txt_threeltr.getText()+"\""; 
     cmmd[3] ="\""+txt_month_c.getText()+"\""; 
     cmmd[4] ="\""+txt_year_C.getText()+"\""; 
     cmmd[5] ="\""+txt_partNumber.getText()+"\""; 
     cmmd[6] ="\""+txt_version.getText()+"\""; 
     cmmd[7] ="\""+txt_destinationname.getText()+"\""; 

ProcessBuilder pb =new ProcessBuilder(Arrays.toString(cmmd));

或者有没有其他的方法来做到这一点。

回答

1

由于ProcessBuilder具有可变参数字符串构造函数,你可以这样做:

ProcessBuilder pb = new ProcessBuilder(cmmd); 

另外,不构建一个数组。像这样创建:

ProcessBuilder pb = new ProcessBuilder ("sh", 
             "app.sh", 
             txt_threeltr.getText(), 
             txt_month_c.getText(), 
             txt_year_C.getText(), 
             txt_partNumber.getText(), 
             txt_version.getText(), 
             txt_destinationname.getText()); 
+0

感谢它工作正常。 – 2012-02-21 14:01:45

0

ProcessBuilder有vargs构造函数,你可以通过你的数组。将值完全作为文本框中的输入(,不包括引号),并将为您处理任何必要的转义。