我正在使用Java运行命令并且没有输出。
Process p;
Runtime run = Runtime.getRuntime();
String s1 = "queryData 1005017 --format '\"%s" scope'";
System.out.println("Command is " + s1);
try {
p = run.exec(s1);
BufferedReader br = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.getErrorStream();
p.waitFor();
}
虽然相同的命令---> queryData 1005017 --format'“%s”scope'运行没有任何问题。想知道我在处理双引号或%符号时是否遗漏了任何东西?
答案 0 :(得分:2)
你没有正确地逃避内部引用:
String s1 = "queryData 1005017 --format '\"%s" scope'";
^--start java string ^--end java string
^^^^^ what's this mean to java?
你可能想要
String s1 = "queryData 1005017 --format '\"%s\" scope'";
^--note this
代替。
答案 1 :(得分:2)
尝试不要使用字符串从Java启动进程。正确的方法是使用ProcessBuilder:
p = new ProcessBuilder(Arrays.asList(
"queryData", "1005017", "--format", "\"%s\" scope")).start();