Обработка ввода / вывода в bash-скрипте, который выполняет другой экземпляр оболочки - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть скрипт bash, который выполняет серию команд.Одним из них является приложение, которое само создает оболочку.Как я могу заставить мой bash-скрипт выполнять команды внутри этой подоболочки?

Пример:

#!/bin/bash
command1
command2
someapp
command3
command4

«someapp» - это, по сути, оболочка bash (предоставляется поставщиком - вне моего контроля),но он, кажется, порождает оболочку в другом процессе, пока спавнер ждет.Это заставляет скрипт bash ждать в someapp до тех пор, пока оболочка не будет закрыта, затем он выполняет команды 3 и 4. Я хочу, чтобы эти команды выполнялись в оболочке someapp.

Любые указатели приветствуются.

1 Ответ

0 голосов
/ 02 сентября 2011

Большинство оболочек принимают аргумент -c, который позволяет указывать команду. Со страницы руководства bash:

-c строка
Если указана опция -c, то команды читаются из строки. Если после строки есть аргументы, они присваиваются позиционным параметрам, начиная с $ 0.

и ...

-s
Если присутствует опция -s или если после обработки опции не осталось аргументов, команды считываются из стандартного ввода. Эта опция позволяет устанавливать позиционные параметры при вызове интерактивной оболочки.

Таким образом, я бы попробовал следующее:

#!/bin/bash
command1
command2
someapp -c "command3 ; command4"

OR

#!/bin/bash
command1
command2
someapp -s <<-EOF
    command3
    command4
    EOF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...