Eu estou escrevendo um script Bash que aceita N opções. Chame-os de -1, -2, ..., -N. O seguinte se aplica ao uso das opções:
- Qualquer número de opções pode ser fornecido, de 0 - N
- Nenhuma opção aceita argumentos
- As opções podem ser fornecidas em qualquer ordem
Procuro isso de maneira bastante padronizada:
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
OBJETIVO 1
Gostaria de adicionar duas opções adicionais:
-
-all Isto implica todos os -1, -2, ... -N
-
-q Isso denota o modo "silencioso", ou seja, não imprime nada para a exibição
Se aparecer -all , ele deve aparecer sozinho ou apenas com -q .
-q pode ser usado com as formas de invocação " -all " ou "-1 -2 ... -N".
OBJETIVO 2
Eu gostaria de reforçar que nenhuma opção pode ser repetida.
PERGUNTA
Estou com dificuldades para expandir minha lógica para atingir minhas metas.
Gostaria de perguntar à comunidade: Como posso alcançar essas metas?
Por favor, note que a meta 2 é secundária. Se alguém tiver uma solução para a meta 1, mas não para a meta 2, por favor, forneça-a!
Editado para adicionar: eu posso forçar a lógica brutalmente; o que eu quero dizer é que estou procurando uma solução limpa e elegante que não envolva repetição repetida desnecessária sobre as opções, que forneça a inclusão automática do processamento de novas opções individuais em todos, etc ...