Я написал сценарий Bash, который принимает N вариантов. Назовите их -1, -2, ..., -N. Следующее относится к использованию опций:
- Может быть предоставлено любое количество опций, от 0 до N
- Никакие варианты не принимают никаких аргументов
- Опции могут быть предоставлены в любом порядке
Я обрабатываю их довольно стандартным способом:
while [[ $# -gt 0 ]]
do
OPTION="$1"
case $OPTION in
-1)
process_option_1
shift
;;
-2)
process_option_2
shift
;;
...
-N)
process_option_N
shift
;;
*)
echo "Unknown option $OPTION. Aborting..."
exit 1
esac
done
ЦЕЛЬ 1
Я хотел бы добавить две дополнительные опции:
- -Все это подразумевает все -1, -2, ... -N
- -q Это обозначает "тихий" режим, т.е. ничего не печатать на дисплее
Если появляется -all , он должен появиться либо сам по себе, либо только с -q .
-q может использоваться с формами вызова " -all " или "-1 -2 ... -N".
ЦЕЛЬ 2
Я бы хотел, чтобы ни один из вариантов не повторился.
ВОПРОС
Мне трудно расширять свою логику для достижения моих целей.
Я хотел бы спросить сообщество: как я могу достичь этих целей?
Обратите внимание, что цель 2 является вторичной. Если у кого-то есть решение для цели 1, но не для цели 2, обязательно предоставьте его!
Отредактировано, чтобы добавить: я могу грубо заставить логику; я хочу сказать, что я ищу чистое, элегантное решение, которое не включает в себя ненужное повторение циклов по опциям, которое обеспечивает автоматическое включение обработки новых отдельных опций в -all и т. д.