Pessoal,
Eu fiz um script e gostaria de tratar os parâmetros passados antes mesmo de executar a função de cada um deles. Vou explicar melhor abaixo:
O script chama-se restaura.sh e tem os seguintes parâmetros:
"Estrutura: restaura.sh [opções] <arquivoDeConfiguração> [lista-pacotes.txt]
OPÇÕES:
-c, --conf Restaura o sistema baseado no arquivo Confs<dataDoBackup>.tar.bz2
opcionalmente gera a lista de pacotes.Ex.:
dj-restaura.sh -c arquivo-confs.tar.bz2 lista-pacotes.txt
-s, --sistema Restaura o sistema através do arquivo Sistema<dataDoBackup>.tar.bz2
-u, --desfazer Volta o backup feito da ultima alteração do sistema.
-f, --force Não faz perguntas.
-h, --help Mostra esta ajuda e sai.
-V, --version Mostra a versão e sai."
O que não pode acontecer:
-c ou --conf se chamado 2 ou mais vezes, tipo:
$ restaura.sh -cf --conf ....
Também não pode chamar o (-u|--desfazer) com o (-c|--conf) e/ou com (-s|--sistema)
$ restaura.sh -s arquivo -u -c arquivo2 arquivo_lista
Eu tentei usar expressões regulares com o grep de várias formas. A que melhor cheguei foi esta:
$ grep -Eo -- '-[[:alpha:]]*(h|c)|--(conf|desfazer)' <<<$@ | wc -l
Também tentei com a opção -c do grep, mas parece que ele conta apenas quantas linhas casou com a ER e não quantas vezes a ER casou com a linha.
Alguém tem uma dica, exemplo ou até mesmo link de algum padrão que já é seguido?