Node.js Nodejs命令行参数要求识别引号

Node.js Nodejs命令行参数要求识别引号,node.js,bash,terminal,Node.js,Bash,Terminal,我是node.js的新手,所以请温柔一点。我试图运行一段简单的代码,将rgb值转换为十六进制值。但是,如果不在参数中添加单引号,我似乎无法在终端中执行程序 当我输入时: node index.js rgbhex rgb(255,255,255) 在我的bash终端中,我得到一个错误: syntax error near unexpected token `(` 但是,当我在参数周围用单引号执行以下操作时: node index.js 'rgbhex' 'rgb(255,255,255)

我是node.js的新手,所以请温柔一点。我试图运行一段简单的代码,将rgb值转换为十六进制值。但是,如果不在参数中添加单引号,我似乎无法在终端中执行程序

当我输入时:

 node index.js rgbhex rgb(255,255,255)
在我的bash终端中,我得到一个错误:

 syntax error near unexpected token `(` 
但是,当我在参数周围用单引号执行以下操作时:

node index.js 'rgbhex' 'rgb(255,255,255)'
代码正常运行(即输出为
#ffffff
)。我的问题是为什么我需要在我的论点中包含单引号?感谢您的指导

我的
index.js
供参考:

function componentToHex(c) {
  var hex = c.toString(16);
  return hex.length == 1 ? "0" + hex : hex;
}

function rgbToHex(r, g, b) {
  return "#" + componentToHex(r) + componentToHex(g) + componentToHex(b);
}

//More comfortable solution

let red;
let green;
let blue;

if(process.argv[2]!=='rgbhex'){
red = Number(process.argv[2]);
green = Number(process.argv[3]);
blue = Number(process.argv[4]);

} else {
   let rgbInput = process.argv[3];
   let regexTest = /[0-9]+/g;
   let arrayOfRgbValues = rgbInput.match(regexTest);

   red = Number(arrayOfRgbValues[0]);
   green = Number(arrayOfRgbValues[1]);
   blue = Number(arrayOfRgbValues[2]);

} 
console.log(rgbToHex(red,green,blue));

括号表示
bash
shell语法中的某些内容:它们包含用于子shell的命令。因此,如果您试图在不使用引号的情况下将其用于其他用途,
bash
gacks.

我不会将此作为答案,所以我只会将其写在评论框中:谢谢您的反馈。事实上,如果我要执行node
index.js rgbhex'rgb(255255255)
,程序运行会很顺利