特殊字符,如星号 argv

special characters like asterisks argv

运行 我的脚本如下:

Node index.js POST *

在我的脚本中我这样做:

process.argv.forEach((val, index) => {
  console.log(`${index}: ${val}`);
});

输出如下,其中 * 导致将我所有文件的名称转储到我的项目中:

$ node index.js POST *
0: C:\Program Files\nodejs\node.exe
1: C:\Users\myComputer\myScript\index.js
2: POST
3: commands
4: data.json
5: index.js
6: node_modules
7: package-lock.json
8: package.json

如何查看传递的 arg 是否为 astricts?

对于其他参数,如其他字符串,它工作得很好(在我的示例中 'POST')。

我也用过https://github.com/tj/commander.js和同样的问题。

使用节点版本 15

如果你 运行 在 bash 或类似的 shell 中,那么 globbing 发生在 shell 级别,在它之前曾经进入你的程序。您无法从程序内部看到是否键入了星号,因为 shell 将其切换为目录中所有文件的列表。

如果你想传递一个真正的星星,你可以把它放在引号里,这样 shell 就不会把它扩展到所有文件,而是按原样传递给程序。