Программа 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.
В пояснении к работе приведены их
спецификация и описание.