Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек_1_6_Обработка командной строки.doc
Скачиваний:
7
Добавлен:
21.09.2019
Размер:
73.73 Кб
Скачать

Программа echo v7 (из седьмой версии unix System V)

Возможно, простейшим примером обработки командной строки является программа V7 echo, печатающая свои аргументы в стандартный вывод, разделяя их пробелами и завершая символом конца строки. Если первым аргументом является -n, завершающий символ новой строки опускается. (Это используется для приглашений к вводу из сценариев оболочки.)

#include <stdio.h>

int main (int argc, char **argv)

{ register int i, nflg;

nflg =0;

if(argc > 1 && argv[l][0] == '-' && argv[l][l] == n )

{ nflg++;

argc--; // уменьшение argc и увеличение argv явл. обычным пропуском

argv++; // аргументов командной строки

}

for(i=l; i<argc; i++)

{ fputs(argv[i], stdout) ;

if (i < argc-1)

putchar(' ') ;

}

if ( nflg == 0)

putchar('\n');

exit(0);

}

Разбор опций: getopt () и getopt_long ()

Примерно в 1980-х группа поддержки UNIX для System III в AT&T заметила, что каждая программа UNIX использовала для разбора аргументов свои собственные методики. Чтобы облегчить работу пользователей и программистов, они разработали большинство из перечисленных ранее соглашений. Группа поддержки UNIX разработала также функцию getopt(3), вместе с несколькими внешними переменными, чтобы упростить написание кода, придерживающегося стандартных соглашений. Функция GNU getopt_long(3) предоставляет совместимую с getopt(3) версию, а также упрощает разбор длинных опций в описанной ранее форме.

Функция getopt (3) представляет собой стандартный способ для последовательного разбора опций и их аргументов. GNU версия getopt (3) предоставляет некоторые расширенные возможности. GNU getopt_long(3) и getopt_long_only(3) позволяют легко разбирать длинные опции.

Знакомство с этими функциями предусмотрено в лаб. раб. №4. В пояснении к работе приведены их спецификация и описание.