Я пишу простую команду оболочки для нашего приложения Java. У меня нет опыта работы с оболочкой Linux и нужна простая команда. То, что я пытаюсь сделать, это получить имя процесса активного окна пользователя. С другой вопрос, который я нашел скрипт следующим образом:Получение возвращаемого значения awk с помощью Java
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
Я в состоянии проверить и распечатать результат, но. Невозможно получить значение со стороны Java. Однако, если я запускаю простой скрипт, например
echo asdasd
Я могу получить строку «asdasd» просто отлично. Как я понимаю, Java может получить только команды эха.
На стороне Java я использую этот метод: частная строка ExecuteCommand (командная строка) {
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 на следующий массив строк,
String[] args = {"/bin/sh","-c",command };
«команда» - это сам скрипт, а не путь к файлу, поскольку он дал ошибки.
Спасибо, это сделал трюк! – Oguz