Bash 如何使用仍在运行的程序自动发送命令并捕获输出?

Bash 如何使用仍在运行的程序自动发送命令并捕获输出?,bash,scripting,Bash,Scripting,我正在运行一个程序,该程序接受命令并提供终端输出,但在执行完命令后不会终止,而是等待下一个命令。我想使用bash脚本从文件中读取行,将这些行作为命令发送给程序,然后将程序的输出写入文件 我一直在尝试这样的事情: program while read line do $line # I want this sent as a command to the program $variable=(`another command to program`) echo $varia

我正在运行一个程序,该程序接受命令并提供终端输出,但在执行完命令后不会终止,而是等待下一个命令。我想使用bash脚本从文件中读取行,将这些行作为命令发送给程序,然后将程序的输出写入文件

我一直在尝试这样的事情:

program
while read line
do
    $line # I want this sent as a command to the program
    $variable=(`another command to program`)
    echo $variable >> $2
done <$1
程序
读行时
做
$line#我想把它作为命令发送给程序
$variable=(`program`的另一个命令)
echo$variable>>$2
在bash 4.x中完成:

coproc program
while read -u "${COPROC[0]}" line; do
  echo "something" >&"${COPROC[1]}"
done

旧的shell可以(更痛苦地)通过命名管道来实现这一点。

您可能应该使用expect或pexpect,而不是bash……也就是说,如果您确实想使用bash实现这一点,请参阅
coproc
关键字。