Cron Job - Регистрировать каждую минуту активности [дубликат]

Наиболее часто используемая идиома в Unix для отделения флагов командной строки от остальных аргументов - это использование двойного тире (--).

Если утилита использует функцию библиотеки Си getopt() (прямо или косвенно), двойное тире будет означать конец опций командной строки, а getopt() завершит разбор командной строки.

Это из getopt(3) руководства по OpenBSD:

Интерпретация опций в списке аргументов может быть отменена опцией '--' (двойное тире), которая заставляет getopt() сигнализировать конец обработки аргументов и возвращать -1.

Вот почему правильным способом удаления файла с именем -f является

$ rm -- -f

например.

Вполне вероятно, что ваша оболочка реализует команду getopts (которая обычно, но не всегда, является встроенной командой) вызовом этой библиотечной функции.

ИМХО, неплохо знать, как использовать getopts в сценариях оболочки и getopt() в программах на Си. Это не очень сложно и значительно облегчает жизнь при написании кода разбора командной строки вашего проекта.

Существует также getopt_long(), доступный в некоторых библиотеках Си, для разбора "длинных опций" (--option=value). Однако это расширение (без каламбура).

0
19.03.2014, 08:42
0 ответов

Теги

Похожие вопросы