JavaScript:
コマンドライン引数の読み取り
How to / 方法
Node.jsでコマンドライン引数を読むのはprocess.argv
を使います。これは引数を配列として保持します。例を見てみましょう。
// process_argv_example.js
// 引数をコンソールに出力します
process.argv.forEach((val, index) => {
console.log(`${index}: ${val}`);
});
// 実行例: node process_argv_example.js one two=2 three=3
// 出力:
// 0: /path/to/node
// 1: /path/to/process_argv_example.js
// 2: one
// 3: two=2
// 4: three=3
引数はゼロから数えて、最初の二つはNodeのパスとスクリプトのパスです。自分たちの引数は二から始まります。
Deep Dive / 深掘り
コマンドライン引数はUNIX時代からあります。古くからプログラムの振る舞いをコントロールする手段です。Node.jsではprocess.argv
を使う以外に、より高度なパッケージもあります。例えば、yargs
やcommander.js
など。「引数をパースする」っていう作業は、「フラグ」や「オプション」に変えることです。これらパッケージは、その作業を簡単にしてくれます。
例: commander.js
const { program } = require('commander');
program
.option('-d, --debug', 'output extra debugging')
.parse(process.argv);
if (program.debug) {
console.log('Debugging is on.');
}
// 実行例: node script.js -d
// 出力: Debugging is on.
Node.js以外にも、他のプログラミング言語には同様の概念が存在します。しかし、実装や使いやすさは言語によって異なります。
See Also / 関連リンク
- Node.js Documentation for
process.argv
: https://nodejs.org/docs/latest/api/process.html#process_process_argv - npm package
yargs
: https://www.npmjs.com/package/yargs - npm package
commander
: https://www.npmjs.com/package/commander