3

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

pgrep -f test.js 

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

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();
4

1 回答 1

1

感谢您提供 javascript 文件的代码片段,我有相同的解决方案。

问题

是你对管道和重定向的使用有点困惑。

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

这里给出了关于管道和重定向的更详细的答案

解决方案

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

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

测试

我运行了您在问题中提供的脚本,以下是输出屏幕截图。 脚本的本地截图

于 2020-11-16T09:39:47.113 回答