Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Получение данных из командной строки
Передать данные в программу можно в командной строке после названия запускаемого файла. Получить эти данные в программе позволяет свойство argv
из модуля process
. Подключить модуль можно так:
const process = require('process');
Свойство argv
содержит массив строк. Массив — это нумерованный набор элементов, расположенных в памяти последовательно друг за другом. Позиция элемента внутри массива задается с помощью индекса. Нумерация элементов массива начинается с 0
, а не с 1
. Получить количество элементов внутри массива позволяет свойство length
. Давайте выведем содержимое массива и количество элементов в окно консоли:
const process = require('process');
console.log(process.argv);
console.log(process.argv.length);
После запуска программы получим примерно следующий результат:
C:\book\p1>node index.js
[ 'C:\\nodejs\\node12\\node.exe', 'C:\\book\\p1\\index.js' ]
2
Итак, по умолчанию массив содержит два элемента:
- первый элемент (имеет индекс
0
) — это путь к программеnode.exe
. Получить этот путь позволяют также свойстваargv0
иexecPath
из модуляprocess
:
console.log(process.argv0);
console.log(process.argv[0]);
console.log(process.execPath);
Значение свойства argv0
зависит от способа запуска в командной строке (содержит исходное значение argv[0]
), тогда как свойство execPath
всегда содержит абсолютный путь к программе node.exe
:
C:\book\p1>node index.js
node
C:\nodejs\node12\node.exe
C:\nodejs\node12\node.exe
C:\book\p1>node.exe index.js
node.exe
C:\nodejs\node12\node.exe
C:\nodejs\node12\node.exe
C:\book\p1>C:\nodejs\node12\node.exe index.js
C:\nodejs\node12\node.exe
C:\nodejs\node12\node.exe
C:\nodejs\node12\node.exe
- второй элемент (имеет индекс
1
) — это путь к запускаемому скрипту:
console.log(process.argv[1]); // C:\book\p1\index.js
Теперь рассмотрим получение данных из командной строки (листинг 2.3).
Листинг 2.3. Получение данных из командной строки
const process = require('process');
const count = process.argv.length;
console.log('Количество элементов:', count);
for (let i = 0; i < count; i++) {
console.log(process.argv[i]);
}
В листинге 2.3 использован цикл for
, который позволяет изменить порядок выполнения инструкций. Обычно программа выполняется слева направо и сверху вниз. Инструкция за инструкцией. Цикл for
меняет эту последовательность выполнения. Инструкции, расположенные внутри блока (ограниченного фигурными скобками), выполняются несколько раз. Количество повторений зависит от выражений внутри круглых скобок. Этих выражений три, и разделены они точками с запятой. Первое выражение объявляет переменную i
и присваивает ей значение 0
. Второе выражение является условием продолжения повторений. Пока значение переменной i
меньше значения count
(количества элементов массива), инструкции внутри блока будут повторяться. Это условие проверяется на каждой итерации цикла. Третье выражение на каждой итерации цикла прибавляет значение 1
к текущему значению переменной i
. Доступ к элементу массива осуществляется с помощью текущего индекса, указанного внутри квадратных скобок. Благодаря циклу мы можем получить любое количество данных, переданных в командной строке.
Для запуска программы вводим команду:
C:\book\p1>node index.js -param1 -param2
В этой команде мы передаем программе некоторые данные (-param1 -param2
). Результат выполнения программы будет выглядеть так:
Количество элементов: 4
C:\nodejs\node12\node.exe
C:\book\p1\index.js
-param1
-param2
Если нужно передать значение, которое содержит пробел, то это значение следует указывать внутри кавычек:
C:\book\p1>node index.js x + y "x + y"
Количество элементов: 6
C:\nodejs\node12\node.exe
C:\book\p1\index.js
x
+
y
x + y
В первом случае мы получили каждый символ по отдельности, в во втором — все символы вместе, указав значение внутри кавычек.
Помощь сайту
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов