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

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

./foo arg1 arg2
./foo

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

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

Usage: ./foo [arg1] [arg2]

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

Ответы

Ответ 1

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

ping (вырезанный результат...)

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

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

Я лично также следую дефакто, используя [] для обозначения необязательного параметра.

Ответ 2

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

Базовые спецификации Open Group Issue 7

IEEE Std 1003.1, выпуск 2013 года

Copyright © 2001-2013 IEEE и Open Group

Ch. 12 - Соглашения об утилитах

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

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

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

Ответ 3

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

От "man man":

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