将用户输入从NodeJS发送到shell脚本

Send user input from NodeJS to shell script

本文关键字:shell 脚本 NodeJS 用户 输入      更新时间:2023-09-26

我有这个NodeJS脚本:

var util  = require('util'),
process = require('child_process'),
ls    = process.exec('test.sh');
ls.stdout.on('data', function (data) {
   console.log(data.toString());
   ls.stdin.write('Test');
});

和这个shell脚本:

#!/bin/bash
echo "Please input your name:";
read name;                 
echo "Your name is $name";

我试着运行NodeJS脚本,它卡在"请输入您的名字:"。有人知道如何从NodeJS脚本发送到shell脚本的输入吗?

谢谢

你必须这样说:

ls.stdin.write('test'n');

如果你想从用户使用spawn输入,你可以继承标准流。

:

var spawn = require('child_process').spawn;
spawn('sh',['test.sh'], { stdio: 'inherit' });

您是否尝试将''n'添加到输入的末尾(例如ls.stdin.write('Test'n');)以模拟按回车键?

同样,您需要process.spawn,而不是process.exec。后者不像您正在使用的那样具有流接口,而是执行命令并缓冲标准输出和标准错误输出(将其传递给给process.exec()的回调)。