Как обозначить, что аргумент командной строки является необязательным при печати
Предположим, что у меня есть 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] любые или все аргументы внутри [] являются необязательными.