exec()
更新日: 2018-09-11
exec(command [, options] [, callback])
利用可能オプション
async
- 非同期で実行します。 コールバックが提供された場合、渡された値に関わらず
true
を設定します。 初期値はfalse
です。 silent
- コンソールに出力しないようにします。 初期値は
false
です。 encoding
- 文字エンコーディングを指定します。 返されたstdoutとstderrの値と、
silent
がfalse
の場合にstdoutとstderrに書き込まれるものに影響します。 初期値は'utf8'
です。 - その他
- Node.jsの
child_process.exec()
で利用可能な任意のオプションを指定することができます。
指定方法
var version = exec('node --version', {silent:true}).stdout;
var child = exec('some_long_running_process', {async:true});
child.stdout.on('data', function(data) {
/* ... do something with data ... */
});
exec('some_long_running_process', function(code, stdout, stderr) {
console.log('Exit code:', code);
console.log('Program output:', stdout);
console.log('Program stderr:', stderr);
});
特に指定しない限り、command
を同期して実行します。 同期実行している場合、ShellStringを返します。 (ShellJS v0.6.xと互換性があり、{ code:..., stdout:... , stderr:... }
というオブジェクト形式で返します。) 非同期で実行している場合、子プロセスのオブジェクトを返し、 callback
は引数として(code, stdout, stderr)
を受け取ります。
期待した動作ではないですか? exec()
はbash
とは異なり、 デフォルトでsh
(Windowsならcmd.exe
)を通して全て実行します。 もしbash
と同じ動作が良いなら、{shell: 'path/to/bash'}
オプションを試してみてください。
使用例
Node.jsのバージョンを表示します。
JavaScript
var sh = require('shelljs');
var version = sh.exec('node --version').stdout;
結果
$ node sample.js
v7.2.1
© 2012 Artur Adib Released under the BSD License. See LICENSE file for details.
このコンテンツはArtur Adib(arturadib)によるShellJSドキュメントを翻訳/改変したものです。