【发布时间】:2014-12-07 17:41:51
【问题描述】:
我正在为我们的 Java 应用程序编写一个简单的 shell 命令。我没有 Linux shell 的经验,需要一个简单的命令。我尝试做的是获取用户的活动窗口的进程名称。从另一个问题我发现了一个脚本如下:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
我可以测试并打印结果,但是。无法从 Java 端获取值。但是,如果我运行一个简单的脚本,例如
echo asdasd
我可以得到“asdasd”字符串就好了。据我了解,Java 只能获取 echo 命令。
在java端我使用这个方法: 私有字符串执行命令(字符串命令){
StringBuffer output = 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) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
来源:http://www.mkyong.com/java/how-to-execute-shell-command-from-java/
--------已解决------
感谢 smasseman 的回答解决了,但是我用下面的字符串数组更改了命令字符串,
String[] args = {"/bin/sh","-c",command };
“command”是脚本本身而不是文件路径,因为它给出了错误。
【问题讨论】:
标签: java linux shell unix terminal