【发布时间】:2016-10-06 18:17:33
【问题描述】:
是否可以以编程方式输入一些 repl(例如mongo),并以编程方式与之交互?也就是说,你能不能以编程方式做到这一点:
$ mongo
MongoDB shell version: 2.4.8
connecting to: test
> db.collections
test.collections
> exit
bye
所做的只是:
- 使用
mongo命令登录到REPL。我知道有可能以某种方式做到这一点,我已经看到 create interactive REPL's in the Node.js world 做到了。了解如何直接在 bash 中执行此操作会很有帮助。 - 登录后,我输入了
db.collections,只是探索了REPL。这个 SO 问题是在问,你能以编程方式执行 this 吗?就像你可以(a)从 bash 脚本创建一个子进程/REPL,然后(b)向它发送像db.collections这样的任意消息,它会评估。 (你能得到响应/输出吗)。 - 以编程方式注销 REPL。
这可能吗?
【问题讨论】:
-
使用“Here-Docs”在此处搜索 Qs(由
<< EOS .... cmds ... EOS分隔(不幸的是,EOS可以是任意字符串,因此有时您会看到<< _或<< EOD,或 mongo 是否可以读取它们。否则请查看expect。祝你好运。 -
作为shellter,说,使用here document。如果这不起作用(某些命令不允许重定向
stdin),请选择基于expect的解决方案。 -
谢谢,我去看看。
标签: bash shell unix process read-eval-print-loop