2012-02-21 4 views
0

私はcygwinとjavaを使ってシェルスクリプトを実行しています。プロセスビルダーでコマンドを書く方法

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));

それともこれを行うには、他の方法があります。 ProcessBuilderは、可変引数の文字列コンストラクタを持っているので

答えて

1

、あなたはこれを行うことができます。

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

ありがとうございます。 –

0

ProcessBuilderは、あなたがあなたの配列を渡すことができvargsコンストラクタがあります。このようにそれを作成します。テキストボックス(引用符はありません)からの入力と正確に値を渡し、必要なエスケープ処理を行います。

関連する問題