从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' });