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ドキュメントを翻訳/改変したものです。