std/cmdline
Source EditЭтот модуль содержит системные средства для чтения параметров командной строки.См. также:
- модуль parseopt для анализа командной строки, выходящего за рамки процедуры parseCmdLine
Импорты
- winlean
Процедуры
proc commandLineParams(): seq[string] {....raises: [], tags: [ReadIOEffect], forbids: [].}-
Удобная процедура, возвращающая параметры командной строки.
Возвращает только параметры. Если вам нужно получить имя исполняемого файла приложения, вызовите getAppFilename().
Доступность: в Posix нет портативного способа получить командную строку из DLL, поэтому процедура не определена в этой среде. Вы можете проверить её доступность с помощью declared().
См. также:
- модуль parseopt
- процедура parseCmdLine
- процедура paramCount
- процедура paramStr
- процедура getAppFilename
Примеры:
when declared(commandLineParams): # Use commandLineParams() here else: # Do something else!
Source Edit proc paramCount(): int {....tags: [ReadIOEffect], raises: [], forbids: [].}-
Возвращает количество аргументов командной строки, переданных при запуске приложения.
В отличие от argc в C, если ваша программа была запущена без параметров, она вернёт ноль. Вы можете запросить каждый отдельный параметр с помощью процедуры paramStr или получить все сразу с помощью процедуры commandLineParams.
Доступность: при генерации динамической библиотеки (см.
--app:lib) в Posix эта процедура не определена. Проверьте доступность с помощью declared().См. также:
Примеры:
when declared(paramCount): # Use paramCount() here else: # Do something else!
Source Edit proc paramStr(i: int): string {....tags: [ReadIOEffect], raises: [], forbids: [].}-
Возвращает
i-й аргумент командной строки, переданный при запуске приложения.iдолжен быть в диапазоне1..paramCount(), в противном случае будет выброшено исключениеIndexDefect. Вместо итерации по paramCount() с этой процедурой вы можете вызвать удобную commandLineParams().Аналогично argv в C, можно вызвать
paramStr(0), но это вернёт зависящие от ОС данные (обычно имя запущенного исполняемого файла). Следует этого избегать и использовать getAppFilename() вместо этого.Доступность: при генерации динамической библиотеки (см.
--app:lib) в Posix эта процедура не определена. Проверьте доступность с помощью declared().См. также:
- модуль parseopt
- процедура parseCmdLine
- процедура paramCount
- процедура commandLineParams
- процедура getAppFilename
Примеры:
when declared(paramStr): # Use paramStr() here else: # Do something else!
Source Edit proc parseCmdLine(c: string): seq[string] {.noSideEffect, ...gcsafe, extern: "nos$1", raises: [], tags: [], forbids: [].}-
Разделяет командную строку на несколько компонентов.
Примечание: эта процедура редко полезна, лучше использовать модуль parseopt.
В Windows она использует следующие правила разбора:
- Аргументы разделяются пробелами (пробел или табуляция).
- Символ «^» не распознаётся как символ экранирования или разделитель. Этот символ обрабатывается парсером командной строки операционной системы до передачи массиву argv программы.
- Строка в двойных кавычках ("строка") интерпретируется как один аргумент, независимо от содержащихся в ней пробелов. Цитата может быть встроена в аргумент.
- Двойная кавычка, предваряемая обратной косой чертой (\"), интерпретируется как буквальная двойная кавычка (").
- Обратные косые черты интерпретируются буквально, за исключением случаев, когда они предшествуют двойной кавычке.
- Если за двойной кавычкой следует чётное количество обратных косых черт, то в массив argv помещается по одной обратной косой черте за каждую пару, а двойная кавычка интерпретируется как разделитель строки.
- Если за двойной кавычкой следует нечётное количество обратных косых черт, то в массив argv помещается по одной обратной косой черте за каждую пару, а оставшаяся обратная косая черта «экранирует» двойную кавычку, в результате чего двойная кавычка (") помещается в argv в качестве буквального символа.
В системах Posix она использует следующие правила разбора: компоненты разделяются пробелами, если они не находятся внутри
"или'кавычек.См. также:
Source Edit
Шаблоны
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/cmdline.html