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)
{ echo "require('./myutils')" ; cat ; } | node
Run Code Online (Sandbox Code Playgroud)
请注意,当接受不是来自终端的输入时,您的 REPL 环境可能会有所不同(例如,提示可能不会出现)。