我有这个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脚本?
谢谢
答案 0 :(得分:2)
您是否尝试在输入结尾添加'\n'
(例如ls.stdin.write('Test\n');
)以模拟按返回/输入?
此外,您需要process.spawn
,而不是process.exec
。后者没有像你正在使用的流式界面,而是执行命令并缓冲stdout和stderr输出(将其传递给process.exec()
的回调)。
答案 1 :(得分:1)
你必须这样说:
ls.stdin.write('test\n');
OR
如果您希望使用spawn
的用户输入,则可以继承标准流。
var spawn = require('child_process').spawn;
spawn('sh',['test.sh'], { stdio: 'inherit' });