2013-02-16 71 views
1

我需要使用的ProcessBuilder建立在Linux下面的命令:撇号的ProcessBuilder

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);。我得到与终端的结果相同的结果。我认为问题是撇号('),请帮我解决这个问题。

+0

我想你的意思是'撇号'? :) – Thomas 2013-02-16 09:42:46

+0

yes..hehe ..谢谢托马斯.. – 2013-02-16 11:19:54

回答

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

说明还缺少额外的报价存在。这些只是外壳需要的。

+0

谢谢Thomas .. !! 'commands.add(“ - p”); commands.add(“0x80 64 45 78 00 00 27”); String b =“-n 12345”; commands.add(B);” 这是工作..只删除额外的引号.. – 2013-02-16 11:11:46