Используйте оболочку сценария оболочки для ввода команд в новую оболочку
Для начала, я не знаю, правильно ли я сформулировал свой титул, но это так.
Я пытаюсь ввести команды из сценария оболочки следующим образом:
#!/bin/sh
Dbm2
table THE_TABLE
Однако после команды Dbm2
текущая оболочка заменяется на Dbm2
оболочки, и я больше не могу продолжать сценарий оболочки оболочки.
Вручную это будет сделано следующим образом:
server_name% Dbm2
Dbm: no table> table THE_TABLE
Это поднимет THE_TABLE
стол из дбм2.
Как я могу использовать сценарий оболочки оболочки для замены этой ручной процедуры, вводя команды в новую оболочку, созданную из сценария оболочки?
1 ответ
Если последовательность команд фиксирована (не изменяется от запуска к выполнению), вы можете использовать:
#!/bin/sh
Dbm2 <<EOF
table THE_TABLE
...other commands...
EOF
ls # Just to demonstrate that the shell continues
<<EOF
обозначение здесь-док. Строки до строки, содержащей EOF, являются входными данными для команды Dbm2
,
Если содержимое команд должно меняться, возможно, вы сможете передать ввод Dbm2
,
В вашем скрипте, если вы вручную вводите команды для Dbm2
и затем выйдите, ваш оригинальный сценарий оболочки должен продолжиться. table THE_TABLE
строка будет рассматриваться как другая команда оболочки и, скорее всего, потерпит неудачу.