Запуск моего сценария следующим образом:
Node index.js POST *
В моем скрипте я делаю так:
process.argv.forEach((val, index) => {
console.info(`${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
Как я могу узнать, является ли переданный аргумент astricts?
Он отлично работает для других аргументов, таких как другие строки (в моем примере «POST»).
Я также использовал https://github.com/tj/commander.js и ту же проблему.
Использование Node версии 15
Если вы запускаете это в bash или какой-либо подобной оболочке, то подстановка происходит на уровне оболочки, прежде чем она попадет в вашу программу. Вы не можете увидеть, была ли набрана звездочка внутри программы, потому что оболочка переключает ее на список всех файлов в каталоге.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы запускаете это в bash или какой-то похожей оболочке, то округление происходит на уровне оболочки, прежде чем он попадет в вашу программу. Вы не можете увидеть, была ли набрана звездочка внутри программы, потому что оболочка переключает ее на список всех файлов в каталоге.
Если вы хотите передать реальную звездочку, вы можете поместить ее в кавычки, и тогда оболочка не расширит ее на все файлы, а передаст ее программе как есть.
Он работает, как и ожидалось, на узле 14 при запуске из powershell. Я получаю только
0: 1: 2:, где 22: *