Как обозначить, что аргумент командной строки является необязательным при использовании печати

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

./foo arg1 arg2
./foo

Есть ли общепринятый способ обозначить, что arg1 и arg2 не являются обязательными аргументами при печати правильного использования команды?

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

Usage: ./foo [arg1] [arg2]

Означают ли эти скобки, что аргумент является необязательным, или существует другой общепринятый способ обозначить, что аргумент является необязательным?

4 ответа

Решение

Лично я не видел "стандарта", который бы обозначал, что переключение является необязательным (например, как существует стандарт, определяющий, например, как пишутся определенные языки), поскольку это действительно личный выбор, но в соответствии с документами IBM и Wiki, а также с многочисленными сценариями оболочки, которые я лично видел (и параметры командной строки из различных программ), "де-факто" предназначено для обработки квадратных скобок ([]) параметры как необязательные параметры. Пример из Linux:

ping (вывод обрезается...)

usage: ping [-c count] [-t ttl] host

где [-c count] а также [-t ttl] являются необязательными параметрами, но host не является.

Я лично следую за defacto, используя [] означать необязательный параметр.

Я полагаю, это такой же стандарт, как и все остальное.

Открытая группа базовых спецификаций, выпуск 7

Стандарт IEEE 1003.1, выпуск 2013 г.

Copyright © 2001-2013 IEEE и The Open Group

Глава 12 - Коммунальные конвенции

Хотя в нем, кажется, не упоминается много вещей, которые я обычно видел за эти годы, они обозначали различные значения:

  • квадратные скобки [optional option]
  • угловые скобки <required argument>
  • Фигурные скобки {default values}
  • круглая скобка (miscellaneous info)

Изменить: я должен добавить, что это просто соглашения. Важно выбрать подходящую конвенцию, четко сформулировать ее и последовательно придерживаться. Будьте гибкими и создайте соглашения, которые, кажется, наиболее часто встречаются на вашей целевой платформе (ях). Они будут наиболее удобными для пользователей.

Да, квадратные скобки указывают необязательные аргументы в справочных страницах Unix.

От "человек человек":

[-abc] любые или все аргументы в [ ] являются необязательными.

Я никогда не задавался вопросом, указаны ли они где-то формально, я всегда предполагал, что они происходят из соглашений, используемых в абстрактной алгебре, в частности, в грамматиках BNF.

Другие вопросы по тегам