2016-06-27 8 views
1

私はコマンドラインユーティリティを書いていますが、TTYに書き込むにはstdoutが必要です。{stdio: 'inherit'}execで取得していますが、それをカットしません。以下のechoコマンドを実行するには、spawnプロセスのための方法が必要です。私は、スポーンは特定のコマンドで子プロセスをスピンアップし、引数を渡すことを知っていますが、私はこれを必要とします。これは私が現在エグゼクティブに与えているものです。これは可能ですか?ノードの起動時にbash/shellのブロックを実行する

const spawn = require('child_process').spawn 
const child = spawn(` 
echo "alpha" 
echo "beta" 
`) 

child.stdout.on('data', (data) => { 
    console.log(`stdout: ${data}`) 
}); 

child.stderr.on('data', (data) => { 
    console.log(`stderr: ${data}`) 
}); 

child.on('close', (code) => { 
    console.log(`child process exited with code ${code}`) 
}); 

答えて

3

spawn()それがシェルコマンドを実行させるために、あなたが明示的をシェル実行可能を呼び出す必要がありますし、引数としてシェルコマンド(複数可)を渡すようは、シェルを伴わない行います

const child = spawn('/bin/sh', [ '-c', ` 
echo "alpha" 
echo "beta" 
` ]) 

注私は、[Unixライク]プラットフォームの広い配列に、コマンドの実行を作るための努力の/bin/shではなく/bin/bashを使用しました。
すべての主要なPOSIXライクシェルは、-cオプションでコマンド文字列を受け入れます。

+1

パーフェクト、これはまさに私が必要だったものです。ありがとうございます! – ThomasReggi

関連する問題