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

Rud*_*Lee 3 javascript shell node.js

我有这个 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');
});
Run Code Online (Sandbox Code Playgroud)

和这个 shell 脚本:

#!/bin/bash
echo "Please input your name:";
read name;                 
echo "Your name is $name";
Run Code Online (Sandbox Code Playgroud)

我尝试运行 NodeJS 脚本,但它卡在“请输入您的名字:”处。有谁知道如何将 NodeJS 脚本的输入发送到 shell 脚本?

谢谢

Mri*_*jay 5

你必须这样说:

ls.stdin.write('test\n');
Run Code Online (Sandbox Code Playgroud)

或者

如果您希望使用来自用户的输入,您可以继承标准流spawn

像这样:

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

  • 对于您的“继承”回应,我是多么感激……非常感谢 (2认同)