【问题标题】:How to write command in process Builder如何在进程构建器中编写命令
【发布时间】:2012-02-21 20:42:57
【问题描述】:

我正在使用 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));

或者有没有其他方法可以做到这一点。

【问题讨论】:

    标签: java processbuilder


    【解决方案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());
    

    【讨论】:

      【解决方案2】:

      ProcessBuilder 有一个 vargs 构造函数,您可以将数组传递给该构造函数。传递与文本框输入完全相同的值(无引号),它会为您处理任何必要的转义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-30
        • 2019-04-14
        • 2020-07-16
        • 1970-01-01
        • 2020-09-10
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        相关资源
        最近更新 更多