执行命令并提示输入 YES
Execute command with prompt YES input
public static String executeCommand(String command) {
StringBuffer sb = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
} BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
给定的代码可以正常执行任何命令,但我有一个命令需要 YES/NO 作为输入。如何将输入提供给命令以供进一步执行?
例如
executeCommand("pio app data-delete model");
output-
[INFO] [App$] Data of the following app (default channel only) will be deleted. Are you sure?
[INFO] [App$] App Name: twittermodeling
[INFO] [App$] App ID: 14
[INFO] [App$] Description: None
Enter 'YES' to proceed:
所以我怎么能给他们 YES 以进一步执行。
谢谢
这样做:
line = reader.readLine();
if (line.toLowerCase().equals("yes")){
....
}
else if (line.toLowerCase().equals("no")){
....
}
else {
...
}
如果你真的需要将 "YES" 传递给 unix 命令,你可以在它前面加上 echo YES |
。 echo YES | pio app data-delete model
应该强制删除。
在 runtime.exec() 的上下文中认为无法正确评估管道,请参阅 this post 了解更多信息。
但是,您应该做的第一件事是检查 pio 命令是否没有 "force" 标志,通常是 -f,这会忽略用户交互。
public static String executeCommand(String command) {
StringBuffer sb = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
} BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
给定的代码可以正常执行任何命令,但我有一个命令需要 YES/NO 作为输入。如何将输入提供给命令以供进一步执行?
例如
executeCommand("pio app data-delete model");
output-
[INFO] [App$] Data of the following app (default channel only) will be deleted. Are you sure?
[INFO] [App$] App Name: twittermodeling
[INFO] [App$] App ID: 14
[INFO] [App$] Description: None
Enter 'YES' to proceed:
所以我怎么能给他们 YES 以进一步执行。
谢谢
这样做:
line = reader.readLine();
if (line.toLowerCase().equals("yes")){
....
}
else if (line.toLowerCase().equals("no")){
....
}
else {
...
}
如果你真的需要将 "YES" 传递给 unix 命令,你可以在它前面加上 echo YES |
。 echo YES | pio app data-delete model
应该强制删除。
在 runtime.exec() 的上下文中认为无法正确评估管道,请参阅 this post 了解更多信息。
但是,您应该做的第一件事是检查 pio 命令是否没有 "force" 标志,通常是 -f,这会忽略用户交互。