Как обозначить, что аргумент командной строки является необязательным при использовании печати
Предположим, у меня есть скрипт, который можно запустить любым из следующих способов.
./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
Хотя в нем, кажется, не упоминается много вещей, которые я обычно видел за эти годы, они обозначали различные значения:
- квадратные скобки
[optional option]
- угловые скобки
<required argument>
- Фигурные скобки
{default values}
- круглая скобка
(miscellaneous info)
Изменить: я должен добавить, что это просто соглашения. Важно выбрать подходящую конвенцию, четко сформулировать ее и последовательно придерживаться. Будьте гибкими и создайте соглашения, которые, кажется, наиболее часто встречаются на вашей целевой платформе (ях). Они будут наиболее удобными для пользователей.
Да, квадратные скобки указывают необязательные аргументы в справочных страницах Unix.
От "человек человек":
[-abc] любые или все аргументы в [ ] являются необязательными.
Я никогда не задавался вопросом, указаны ли они где-то формально, я всегда предполагал, что они происходят из соглашений, используемых в абстрактной алгебре, в частности, в грамматиках BNF.