Tiago Tarifa tiagotarifa@gmail.com [shell-script]
2016-10-20 17:42:26 UTC
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?
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?