0

首先,我不知道我的标题措辞是否正确,但它就在这里。

我正在尝试按以下方式从 shell 脚本中输入命令:

#!/bin/sh
Dbm2
table THE_TABLE

但是,在Dbm2运行命令后,当前的 shell 被 shell 替换Dbm2,我不能再继续使用 shell 包装脚本。

手动,这将按以下方式完成:

server_name% Dbm2
Dbm: no table> table THE_TABLE

THE_TABLE将从 Dbm2 中调出表。

如何通过将命令输入到从 shell 脚本生成的新 shell 中来使用 shell 包装脚本来替换此手动过程?

4

1 回答 1

0

如果命令的顺序是固定的(从运行到运行不会改变),您可能可以使用:

#!/bin/sh
Dbm2 <<EOF
table THE_TABLE
...other commands...
EOF

ls  # Just to demonstrate that the shell continues

<<EOF符号是一个here-doc。直到包含 EOF 的行是命令的输入Dbm2

如果命令的内容需要改变,您可以将输入通过管道传输到Dbm2.

在你的脚本中,如果你手动输入命令Dbm2然后退出,你原来的 shell 脚本应该会继续。该table THE_TABLE行将被视为另一个 shell 命令,并且很可能会失败。

于 2013-07-17T18:40:19.290 回答