@xxxxc

Как выполнить несколько bash-команд за раз в Java?

Получается выполнить только одну команду за раз. Просто ls работает так как надо, но если перед указать путь, то не работает.
String[] cmd = {"/bin/bash", "-c", " echo  [password]| sudo -S cd / && ls"};
        Process pb = Runtime.getRuntime().exec(cmd);

Мож кто, что подскажет, как выполнять несколько команд?
  • Вопрос задан
  • 361 просмотр
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Выполнить одну, проверить возвращаемое значение, если выполнено успешно, запустить вторую. То есть реализовать в коде именно то, что делает символ '&'.
Ответ написан
Комментировать
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
В Вашем случае Runtime.getRuntime().exec порождает аж 3 процесса разных и у каждого свое окружение.
Можете почитать это и соответсвенно вызвать единожды bash, получить getInputStream() и getOutputStream() а дальше скармливать нужные команды в стримы и читать из них.
А вообще рекомендую смотреть в сторону ProcessBuilder, с ним проще и удобнее.
Еще как вариант можно схитрить, сделать в %temp% скрипт, выполнить его, удалить этот скрипт после выполнения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы