Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting Array as a raw command line argument

I am trying to implement raw command line arguments in Node.js.

When I implement simple variables everything works

(node example.js variable)

But when I implement as an argument an array it doesn't work

(node example.js "['127.0.0.5', '127.0.0.3']" )

Full code:

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = process.argv[3];

console.log('Host: ' + variable);
console.log('array: ' + array);

Problem

Example of input of arguments ( node example.js variable "['127.0.0.5', '127.0.0.3']" )

How to pass the second argument ("['127.0.0.5', '127.0.0.3']") as an array rather than as a string (as it is now), so that later I might access array's n-th element (example array[0] = '127.0.0.5' )

SOLUTION

The input should be like ( '["127.0.0.5", "127.0.0.3"]' changing the quotes), and also we need to parse the argument as JSON.

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = JSON.parse(process.argv[4]);

console.log('Host: ' + variable);
console.log('array: ' + array);
console.log(array[1]
like image 827
Chris Avatar asked Jun 13 '26 14:06

Chris


2 Answers

It's an old question, but if someone still looking for a simple solution, here it is.

Pass named arguments multiple times with same name.

node example.js --variable=127.0.0.5 --variable=127.0.0.3

Use minimist NPM package to extract args as:

const parseArgs = require('minimist');

const args = parseArgs(process.argv.slice(2));
console.log(args.variable);

Output:

[ '127.0.0.5', '127.0.0.3' ]
like image 91
Vaibhav Nigam Avatar answered Jun 16 '26 04:06

Vaibhav Nigam


You won't be able to pass an array. What you have to do (and possibly are in the middle of doing) is passing something like an array converted to a JSON string.

And in the application, you would just do a JSON.parse() to get your array out of the string.

like image 34
Andrius Avatar answered Jun 16 '26 02:06

Andrius



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!