从NodeJS发送用户input到shell脚本

我有这个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脚本,并在“请input您的姓名:”。 有谁知道如何发送从NodeJS脚本的input到shell脚本?

谢谢

您是否尝试在input的末尾添加'\n' (例如ls.stdin.write('Test\n'); )以模拟按回车/input?

另外,你需要process.spawn ,而不是process.exec 。 后者没有像你正在使用的stream接口,但它执行命令并缓冲stdout和stderr输出(将其传递给给process.exec()的callback函数)。

你将不得不这样说:

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

要么

你可以inheritancestdanderdstream如果你想input用户使用spawn

喜欢这个:-

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