gpt4 book ai didi

java - 系统命令无法从程序执行

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:00 25 4
gpt4 key购买 nike

我已经测试了以下方法来从我的程序中执行 Linux 命令

方法一:全部赋值到一个字符串中

String temp1 = "'/"+t2+"/,/"+t1+"/p'";
String command2 = "sed -n "+temp1+" app.log";
Process p1 = Runtime.getRuntime().exec(command2);



方法二:使用数组

String [] command2 = new String []{"sed","-n","'/",t2,"/,/",t1,"/p'", "app.log";
System.out.println("The command2 is : "+Arrays.toString(command2);
Process p2 = new ProcessBuilder(command2).start();



这是我的引用 link对于方法 2,但这两种方法根本不起作用。这是我希望在终端中运行的命令
sed -n '/14:32:54/,/14:33:44/p' app.log

这是我调用系统命令的部分代码,line2 变量没有显示

String [] command2 = new String []{"sed","-n","'/",t2,"/,/",t1,"/p'","stlog.txt"};
Process p2 = new ProcessBuilder(command2).start();
BufferedReader br2 = new BufferedReader(new InputStreamReader(p2.getInputStream()));
String line2;
while((line2 = br2.readLine()) != null)
{
System.out.println(line2);
}

最佳答案

在我的案例中有效:

 ProcessBuilder processBuilder = new ProcessBuilder("/bin/bash", "-c", "pwd")
.directory(new File("some.directory.path"));
Process process = processBuilder.start();

或者您可以使用 ProcessBuilder sip 并调用

String command = "ping www.google.com";
String[] commandArray = {"/bin/bash", "-c", "pwd"};
Runtime.getRuntime().exec(commandArray);

"/bin/bash" 0 means that you are going to exec command in bach

"-c" -defines that next param is command

command - any command like "ping www.google.com" or "./script.sh" that you execute with terminal

你应该只放置你的命令而不是“ping www.google.com”,但是因为你没有指定目录 - 脚本将从项目目录执行(你可以通过执行打印当前的“pwd”命令来检查它目录)。这就是为什么 ProcessBuilder 更可取,因为您可以在那里指示执行目录(将“some.directory.path”替换为您的目录)。

.directory(new File("path/to/some/dir"));

关于java - 系统命令无法从程序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com