1

ProcessBuilder を使用して、Linux で次のコマンドをビルドする必要があります。

sudo packit -t UDP -S 1000 -D 1200 -s 127.0.0.1 -d 192.168.1.1 -c 5 -n 12345 -p '0x 80 64 45 78 00 00 27'

次のコードで試しました:

commands.add("sudo"); commands.add("packit");
commands.add("-t"); commands.add("UDP");
commands.add("-S"); commands.add("1000");
commands.add("-D"); commands.add("1200");
commands.add("-s"); commands.add("127.0.0.1");
commands.add("-d"); commands.add("192.168.1.1");
commands.add("-c"); 
String a = "5"; commands.add(a);
String b = "-n 12345"; commands.add(b);
String c = "-p '0x 80 64 45 78 00 00 27'"; commands.add(c);
ProcessBuilder pb = new ProcessBuilder(commands);
Process process = pb.start();

構文エラーはありませんが、結果は端末の結果と同じではありません。削除するString c = "-p '0x 80 64 45 78 00 00 27'"; commands.add(c);と、端末の結果と同じ結果が得られます。問題はアポストロフィ (') だと思います。この問題の解決を手伝ってください。

4

1 に答える 1

1

私はこれらが間違っていると思います:

String b = "-n 12345"; commands.add(b);
String c = "-p '0x 80 64 45 78 00 00 27'"; commands.add(c);

オプション(-n-p)は、その引数とは別のものです。

commands.add("-n"); commands.add("12345");
commands.add("-p"); commands.add("0x 80 64 45 78 00 00 27");

そこに追加の引用符がないことにも注意してください。これらはシェルにのみ必要です。

于 2013-02-16T09:41:25.407 に答える