如何将文本发送到命令然后从终端读取

epi*_*ian 3 bash shell-script node.js

我想知道是否可以将一些发送到命令的标准输入,然后继续从终端读取。

我试图解决的问题是每次打开 Node.js REPL 时都执行一些初始化代码,所以我从一开始就在 REPL 中有一些可用的函数。基本上,要自动执行此操作:

$ node
> require('./myutils')
> ... continue using the REPL
Run Code Online (Sandbox Code Playgroud)

我现在可以使用这里的字符串向命令的标准输入发送一些文本:

$ node <<<"require('./myutils')"
Run Code Online (Sandbox Code Playgroud)

这将执行我的初始化代码,但也会在此之后立即关闭 REPL。

对于 Node.js 的这个特定问题,也许还有另一种解决方案,但我想知道是否有一种通用的方法来混合来自字符串或文件的输入,然后继续从终端读取。

更新Chris Down 的解决方案有效,但默认情况下 Node.js REPL 不会以交互模式运行(这是预期的,因为我们不是从终端读取)。幸运的是,有一个-i选项可以在 Node.js 终端中强制交互模式:

{ echo "require('./myutils')" ; cat ; } | node -i
Run Code Online (Sandbox Code Playgroud)

Chr*_*own 7

{ echo "require('./myutils')" ; cat ; } | node
Run Code Online (Sandbox Code Playgroud)

请注意,当接受不是来自终端的输入时,您的 REPL 环境可能会有所不同(例如,提示可能不会出现)。