Анализ аргументов командной строки - Command-line argument parsing
Разные синтаксический анализ аргументов командной строки методы используются разными языки программирования к разбирать аргументы командной строки.
Языки программирования
C
C использует argv
для обработки аргументов командной строки.[1][2]
Пример C синтаксический анализ аргументов будет:
#включают <stdio.h>int главный (int argc, char *argv[]){ int считать; за (считать=0; считать<argc; считать++) ставит (argv[считать]);}
Ява
Пример Ява синтаксический анализ аргументов будет:
общественный учебный класс Эхо { общественный статический пустота главный (Нить[] аргументы) { за (Нить s: аргументы) { Система.из.println(s); } }}
Perl
Perl использует @ARGV
.
для каждого $ arg (@ARGV)GT{ Распечатать $ arg;}
FT
или же
для каждого $ argnum (0 .. $ # ARGV)ST{ Распечатать $ ARGV[$ argnum];}
AWK
AWK использует ARGV
также.
НАЧИНАТЬ { за ( я = 0; я < ARGC; я++ ) { Распечатать ARGV[я] }}
PHP
PHP использует argc
как количество аргументов и argv
как множество содержащие значения аргументов.[3][4] Чтобы создать массив из аргументов командной строки в -foo: бар
формат, можно использовать следующее:
$ args = parseArgs($ argv);эхо getArg($ args, 'фу');функция parseArgs(множество $ args){ для каждого ($ args в качестве $ arg) { $ tmp = взорваться(':', $ arg, 2); если ($ arg[0] === '-') { $ args[substr($ tmp[0], 1)] = $ tmp[1]; } } возвращаться $ args;}функция getArg(множество $ args, нить $ arg){ если (исет($ args[$ arg])) { возвращаться $ args[$ arg]; } возвращаться ложный;}
PHP также может использовать getopt ()
.[5]
Python
Python использует sys.argv
, например:
импорт sysза аргумент в sys.argv: Распечатать аргумент
У Python также есть модуль под названием argparse
в стандартной библиотеке для разбора аргументов командной строки.[6]
Ракетка
Ракетка использует текущие аргументы командной строки
параметр и предоставляет ракетка / cmdline
[7] библиотека для анализа этих аргументов. Пример:
#lang ракетка(требовать ракетка / cmdline)(определять улыбка? (make-параметр #t))(определять нос? (make-параметр #ложный))(определять глаза (make-параметр ":"))(командная строка #: программа "смайлик" #: один раз любой ; следующие два являются взаимоисключающими [("-s" "--улыбка") "режим улыбки" (улыбка? #истинный)] [("-f" "--хмуриться") "режим хмуриться" (улыбка? #ложный)] #: по одному разу [("-n" "--нос") "добавить нос" (нос? #истинный)] [("-e" "--глаза") char "используйте для глаз" (глаза char)])(printf "~ а ~ а ~ а п" (глаза) (если (нос?) "-" "") (если (улыбка?) ")" "("))
Библиотека анализирует длинные и короткие флаги, обрабатывает аргументы, позволяет комбинировать короткие флаги и обрабатывает -час
и --помощь
автоматически:
$ ракетка / tmp / c -nfe 88-(
Node.js
JavaScript программы, написанные для Node.js использовать process.argv
глобальная переменная.[8]
// argv.jsконсоль.бревно(процесс.argv);
$ node argv.js один два три четыре пять[ 'узел', '/home/avian/argvdemo/argv.js', 'один', 'два', 'три', 'четыре', 'пять' ]
Node.js программы вызываются путем запуска интерпретатора узла интерпретатора с данным файлом, поэтому первые два аргумента будут узел
и имя исходного файла JavaScript. Часто бывает полезно извлечь остальные аргументы, вырезав подмассив из process.argv
.[9]
// процесс-args.jsконсоль.бревно(процесс.argv.ломтик(2));
$ node process-args.js один два=три четыре[ 'один', 'два = три', 'четыре' ]
Рекомендации
- ^ "Книга Си - Аргументы к главному". Publications.gbdirect.co.uk. Получено 2010-05-31.
- ^ Пример разбора аргументов и опций C
- ^ "Руководство по PHP". PHP. Получено 2010-05-31.
- ^ викиучебники: Программирование на PHP / интерфейс командной строки
- ^ https://php.net/getopt
- ^ "argparse - синтаксический анализатор параметров, аргументов и подкоманд командной строки". Документация Python v2.7.2. Получено 7 марта 2012.
- ^ Справочное руководство Racket, Анализ командной строки
- ^ "process.argv". Node.js v10.16.3 Документация. Получено 3 октября 2019.
- ^ «Как разбирать аргументы командной строки». Документация по Node.js Foundation. Получено 3 октября 2019.