Используйте оболочку сценария оболочки для ввода команд в новую оболочку

Для начала, я не знаю, правильно ли я сформулировал свой титул, но это так.

Я пытаюсь ввести команды из сценария оболочки следующим образом:

#!/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 строка будет рассматриваться как другая команда оболочки и, скорее всего, потерпит неудачу.

Другие вопросы по тегам