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

または、これを行う他の方法はありますか。

4

2 に答える 2

1

varargs 文字列コンストラクターがあるため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());
于 2012-02-21T12:42:20.557 に答える
0

にはProcessBuilder、配列を渡すことができる vargs コンストラクターがあります。テキスト ボックス (引用符なし) からの入力とまったく同じ値を渡すと、必要なエスケープが処理されます。

于 2012-02-21T12:42:57.343 に答える