node.js - 从命令行向 Node.js 脚本发送字符串和回车键

标签 node.js bash command-line process inquirerjs

我在 Linux 中运行一个 Node.js 脚本,提示(通过 lib)用户输入代码。我得到脚本的进程 ID:

pgrep -f test.js 

然后用新行将代码传递给它以模拟回车键:

echo -e "1234\n" > /proc/88888/fd/0

代码 1234 已通过,也添加了一个新行,但它没有触发 Enter 键,因此脚本不会继续。但是,当我在 shell 中手动按下 Enter 键时,脚本会识别 Enter 键。所以问题是如何可靠地将 Enter 键发送到另一个进程/脚本?

test.js脚本代码如下:

inquirer = require('inquirer');

async function plztest() {

let { code } = await inquirer.prompt([
    {
        type: 'input',
        name: 'code',
        message: 'Enter code',
    },
]);
console.log(code);
process.exit();
};
      
plztest();

最佳答案

感谢您提供 javascript 文件的代码片段,我已经找到了相同的解决方案。

问题

是你对管道和重定向的用法有点迷糊。

  • 管道 | 用于将输出传递给另一个程序或实用程序。
  • Redirect > 用于将输出传递到文件或流。

关于管道和重定向的更详细的回答 is given here

解决方案

既然现在我们知道我们需要在这里使用管道,那么这样的事情就可以解决问题。

echo -e "1234" | /proc/88888/fd/0

测试

我运行了你在问题中提供的脚本,以下是输出截图。 Local Screenshots of script

关于node.js - 从命令行向 Node.js 脚本发送字符串和回车键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64852599/

相关文章:

javascript - 防止 JavaScript 中使用迭代的嵌套回调

node.js - Express 默认的 app.listen 是一个很好的生产服务器

node.js - 使用 nodejs/sequelize 加密 postgres 数据

Linux cp 与变量

windows - 如何解决 bash 编码问题?

javascript - mongodb-如何从此查询中隐​​藏 _id ?

bash - Mac 终端上的 PyFERRET 命令不起作用

c - 在C编程中,%d随机生成数字吗?

linux - 在 Linux 中创建文件并替换内容

bash - 在 Haxe 中获取 shell 命令的输出