javascript - Send user input from NodeJS to shell script - Stack Overflow

I have this NodeJS script: var util= require('util'),process = require('child_process

I have this NodeJS script:

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

and this shell script:

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

I tried to run the NodeJS script and it stucked at "Please input your name:". Does anyone know how to send an input from NodeJS script to the shell script ?

Thanks

I have this NodeJS script:

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

and this shell script:

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

I tried to run the NodeJS script and it stucked at "Please input your name:". Does anyone know how to send an input from NodeJS script to the shell script ?

Thanks

Share Improve this question edited Apr 11, 2017 at 5:53 Rudy Lee asked Jun 25, 2014 at 12:50 Rudy LeeRudy Lee 4385 silver badges18 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 5

You will have to say something like this:

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

OR

you can inherit standard streams if you want input from user using spawn.

like this:

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

Did you try adding '\n' to the end of your input (e.g. ls.stdin.write('Test\n');) to simulate pressing return/enter?

Also, you want process.spawn, not process.exec. The latter does not have a streaming interface like you are using, but it instead executes the mand and buffers stdout and stderr output (passing it to the callback given to process.exec()).

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742375511a4432108.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信