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