如何从命令行将字符串作为参数传递给Node?

时间:2016-05-12 14:12:20

标签: node.js

我是Node的新手,我试图在Node中编写一个命令行工具,允许你将一个字符串作为参数传递。

我看到Node在使用process.argv时似乎打破了作为数组传入的每个单词。我想知道获取字符串的最佳方法是循环遍历数组以构造字符串还是有不同的选项?

所以,让我们说我有一个简单的程序,它接受一个字符串,只需控制台。记录它。它看起来像这样。

> node index.js This is a sentence.
> This is a sentence.

4 个答案:

答案 0 :(得分:7)

您可以用引号括起句子,即

> node index.js "This is a sentence."

另一种选择是加入程序中的文本:

process.argv.shift()  // skip node.exe
process.argv.shift()  // skip name of js file

console.log(process.argv.join(" "))

答案 1 :(得分:0)

  

以上答案使用了过多的代码!   
  不用两次使用Array.prototype.splice

// Removes elements from offset of 0
process.argv.splice(0, 2);

// Print the text as usually!
console.log(process.argv.join(' '));

代码摘要

  • 从数组中删除前2个元素。
  • 使用[Backspace]分隔符加入他们。

答案 2 :(得分:0)

如果您打算使用npm软件包。然后使用极简主义。变得易于处理命令行参数。例如,查看他们的npmjs网页。希望对您有帮助。

var args=require('minimist')(process.argv.slice(2),{string:"name"});
console.log('Hello ' +args.name);

输出是。

node app.js --name=test
Hello test

答案 3 :(得分:0)

另一种不需要引号或修改 process.argv 的解决方案:

const [ node, file, ...args ] = process.argv;
const string = args.join(' ');
console.log(string);

输出:

> node index.js This is a sentence
> This is a sentence

如果您想详细了解我在此处使用展开运算符 (...) 的方式,请阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Rest_in_Object_Destructuring