在nodejs中逐字获取命令行参数

时间:2019-01-27 17:40:56

标签: node.js

我想获得用户输入的确切命令。唯一允许的差异是'可以代替",反之亦然。

例如,如果用户键入。

node test.js git commit -m "first message"

我想在控制台上记录以下任一内容。

You typed: git commit -m 'first message' //line A
You typed: git commit -m "first message" //line B

但不能接受:

You typed: "git" "commit" "-m" "first message" //line C
You typed: 'git' 'commit' '-m' 'first message' // line D

正如您在上面看到的,引号可以与所提供的用户不同('可以代替",反之亦然,如B行),但不能放错位置(如C行) C和D)。希望这很清楚。

编辑: 编辑整个问题以避免混淆。

1 个答案:

答案 0 :(得分:0)

您的问题不是很清楚,但是假设您只想记录接收到的参数,您可以这样做:

let args = [];
// Get program arguments
process.argv.forEach((val, index) => {
if (index > 1)
    args.push(val);
});
let command = args.join(" ");
console.log("You typed: ", command);

但是请注意,在打印输出时,您会失去引号,正如@Joe在评论中所说的那样,shell先将它们转义,然后再传递给节点