ProcessBuilder не распознает встроенную команду - PullRequest
0 голосов
/ 26 июня 2019

У меня есть метод

final ProcessBuilder processBuilder = new ProcessBuilder(this.cmd);
        processBuilder.redirectErrorStream(true);
        try {
            final Process process = processBuilder.start();
            try (final BufferedReader reader =
                         new BufferedReader(
                                 new InputStreamReader(
                                         process.getInputStream()
                                 )
                         )
            ) {
                while (reader.ready()) {
                    System.out.println(reader.readLine());
                }
                process.waitFor(this.timeOut, TimeUnit.SECONDS);
            }
        } catch (final Exception exc) {
            throw new IllegalStateException("Terminal command execution exception", exc);
        }

Этот метод берет cmd (массив строк) из конструктора, а затем выполняет его.Это значение cmd

new String[]{"cat","$(cat /home/Downloads/tmp/aqnYtUSVFp.txt)",">","/home/Downloads/hello.ts"}

Таким образом, вся команда выглядит следующим образом cat $(cat home/Downloads/tmp/aqnYtUSVFp.txt) > /home/Downloads/hello.ts Она работает нормально, если я запускаю ее в терминале, но ProcessBuilder показывает мне следующую ошибку

cat: '$(cat /home/Downloads/aqnYtUSVFp.txt)': No such file or directory
cat: '>': No such file or directory
cat: /home/Downloads/hello.ts: No such file or directory

Что я пропустил.Почему ProccBuilder не распознает эту команду?

...