Node.js Nodejs命令行参数要求识别引号
我是node.js的新手,所以请温柔一点。我试图运行一段简单的代码,将rgb值转换为十六进制值。但是,如果不在参数中添加单引号,我似乎无法在终端中执行程序 当我输入时: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 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.我不会将此作为答案,所以我只会将其写在评论框中:谢谢您的反馈。事实上,如果我要执行nodeindex.js rgbhex'rgb(255255255)
,程序运行会很顺利