Глава 26 Синтаксический анализ параметров командной строки

Глава 26

Синтаксический анализ параметров командной строки

Многие Linux-программы позволяют задавать параметры командной строки. Эти параметры выполняют самые разнообразные функции, однако имеют практически одинаковую синтаксическую структуру. Короткие параметры состоят из символа -, за которым следует один алфавитно-цифровой символ. Длинные параметры, обычные для утилит GNU, состоят из пары символов --, за которыми следует строка, состоящая из букв, цифр и дефисов. После любого из этих параметров может стоять аргумент. Пробел отделяет короткий параметр от его аргументов, а пробел или знак равенства отделяют длинный параметр от аргумента.

Проверить синтаксис параметров командной строки можно многими способами. Наиболее популярным методом является проверка синтаксиса массива argv, выполняемая вручную. Помочь в проверке синтаксиса параметров могут библиотечные функции getopt() и getoptlong(). Функция getopt() присутствует во многих реализациях Unix, однако она поддерживает только короткие параметры. Функция getoptlong() доступна в Linux и позволяет автоматически анализировать синтаксис коротких и длинных параметров[181].

Библиотека popt предназначена специально для синтаксического анализа параметров. По сравнению с функциями getopt() она обладает некоторыми преимуществами.

• В ней не используются глобальные переменные, что позволяет применять ее при многократных проходах, необходимых для синтаксического анализа argv.

• Она может анализировать синтаксис произвольного массива, состоящего из элементов в стиле argv. Поэтому библиотеку popt можно применять для синтаксического анализа текстовых строк, представленных в стиле командной строки, из любого источника.

• Библиотека может анализировать синтаксис аргументов многих типов, не требуя для этого дополнительного кода в приложении.

• Она предлагает стандартный метод использования псевдонимов параметров. Программы, использующие библиотеку popt, могут позволить пользователям добавлять новые параметры командной строки, которые будут определяться как комбинации уже существующих параметров. Благодаря этому пользователь может определять новое сложное поведение или изменять поведение существующих параметров, принятое по умолчанию.

• Благодаря особому механизму библиотеки могут анализировать синтаксис одних параметров в тот момент, когда главное приложение анализирует синтаксис других параметров.

• Она может автоматически генерировать сообщение об использовании, в котором будут перечислены параметры, воспринимаемые программой, а также более подробное справочное сообщение.

• Библиотека может генерировать обычные сообщения об ошибках.

Подобно функции getoptlong(), библиотека popt поддерживает короткие и длинные параметры.

Библиотека popt является в высшей степени доступной и может работать на любой POSIX-платформе. Самую последнюю версию библиотеки можно найти по адресу ftp://ftp.rpm.org/pub/rpm. Библиотека popt обладает целым рядом функциональных возможностей, не упоминаемых в этой главе; их описание можно найти на man-странице для popt.

Библиотека popt может распространяться либо под лицензией General Public License GNU, либо под лицензией Library General Public License GNU.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Синтаксический анализ выражений 

Из книги Давайте создадим компилятор! автора Креншоу Джек

Синтаксический анализ выражений  Начало Если вы прочитали введение, то вы уже в курсе дела. Вы также скопировали программу Cradle в Turbo Pascal и откомпилировали ее. Итак, вы готовы.Целью этой главы является обучение синтаксическому анализу и трансляции математических


Закачка с командной строки

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

Закачка с командной строки Самым популярным инструментом для закачки файлов и целых сайтов является утилита GNU Wget, которая, как правило, устанавливается по умолчанию во многих дистрибутивах Linux. Эта утилита поддерживает все популярные протоколы HTTP/HTTPS и FTP, умеет работать


Обработка параметров командной строки

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Обработка параметров командной строки Самый простой вариант организовать диалог с пользователем состоит в использовании параметров командной строки. Напомним, что объектная модель WSH предоставляет несколько методов, которые позволяют производить анализ именных и


26.2.2. Синтаксический анализ командной строки

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

26.2.2. Синтаксический анализ командной строки После того как приложение создаст poptContext, оно может приступить к синтаксическому анализу аргументов. Функция poptGetNextContext() выполняет синтаксический анализ аргумента.#include <popt.h>int poptGetNextOpt(poptContext con);Принимая содержимое в


26.6. Синтаксический анализ строк аргументов

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

26.6. Синтаксический анализ строк аргументов Хотя библиотека popt обычно используется для синтаксического анализа аргументов, уже разделенных на массив вида argv, в некоторых программах необходимо анализировать синтаксис строк, формат которых идентичен командным строкам.


14.1. Синтаксический анализ простого документа XML

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

14.1. Синтаксический анализ простого документа XML ПроблемаИмеется некоторая совокупность данных, хранимых в документе XML. Требуется выполнить синтаксический анализ документа и превратить эти данные в объекты C++. Документ XML имеет достаточно небольшой размер и может


Ключи командной строки

Из книги автора

Ключи командной строки Большинству пользователей не нужно работать с интерфейсом командной строки, ключи предназначены для использования системными администраторами. С их помощью можно вручную установить или удалить Radmin, изменить номер порта, а также производить


Переключатели командной строки

Из книги автора

Переключатели командной строки Требуются только начальные символы переключателей. Вы также можете набрать любую часть текста в квадратных скобках, показанного в табл. 37.1, включая полное название режима. Например, задание -n, -no, -noauto имеет одинаковый эффект.Таблица 37.1.


7.8.1. Класс для обработки параметров командной строки

Из книги автора

7.8.1. Класс для обработки параметров командной строки Чтобы не перегружать функцию main() деталями, касающимися обработки параметров командной строки, лучше отделить этот фрагмент. Можно написать для этого функцию. Например:extern int parse_options( int arg_count, char *arg_vector );int main( int argc, char