2014-06-25 103 views
1

我有這樣的NodeJS腳本:發送用戶輸入到shell腳本

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腳本,並在「請輸入stucked你的名字:」。有誰知道如何將輸入從NodeJS腳本發送到shell腳本?

感謝

回答

2

你嘗試加入'\n'您輸入的結尾(例如ls.stdin.write('Test\n');)來模擬按回車鍵/輸入?

此外,你想要process.spawn,而不是process.exec。後者沒有像您使用的流式接口,但它執行該命令並緩衝stdout和stderr輸出(將其傳遞給回調給process.exec())。

+0

感謝,它解決了這個問題 –

1

你將不得不說這樣的事情:

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

OR

可以繼承標準流,如果你使用spawn從用戶想要輸入。

這樣的:

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