2012-02-21 38 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構造函數,你可以通過你的數組。將值完全作爲文本框中的輸入(,不包括引號),並將爲您處理任何必要的轉義。

相關問題