msoliver
(usa Debian)
Enviado em 05/05/2023 - 21:57h
dark777 escreveu:
msoliver escreveu:
O erro esta na atribuição da variável:
OPTS=$(getopt -o u:,p:,c:,h --long user:,proj:,commit:,help -n ${0} -- "$@")
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________
Eu vou ter que mudar a posição das variáveis?
Mas e se o usuário digitar algo como:
./script -c" " -p"" como eu vço para verificar espaços em branco quando as opçoes forem usadas com as apas duplas assim:
-c" "
--commit" "
-p" "
--proj" "
-u" "
--user" "
?
Pq de acododo com algums testes que su fiz se eu fizer:
./script -u"githubuser" -p " "
Ele pega o diretório $USER e inicializa o repositório ali fazendo subindo a pasta do usuário como repositório.
E na url que cria o repositório ele cria um repositório com o nome de um traço "-"
Estou tentando tratar estes erros e problemas indiferente da posição em que o usuário use os argumentos e verificar o que foi passado a estes argumentos,
se foi algo como -p " " ou -p"" -proj"projeto1" ou -u"githubuser" ou -u " " ou -u""
Eu mudei as posiçoes deixando assim:
OPTS=$(getopt -o u:,c:,p:,h --long user:,commit:,proj:,help -n ${0} -- "$@")
e ao digitar:
./script --user "githubuser" --proj -c"comentario1"
ele esta criando um repositório na url com o nome "-ccomentario1"
wiki.anon
Boa noite Dark.
A "Coisa" é complicada.....
Se passar dessa forma, dá erro!
./script --user "githubuser" --proj -c"comentario1"
Pega (-c"comentario1"), como opção de "proj"
---------------------------------------------------------
./script --user "githubuser" --proj="" -c"comentario1"
Ou
./script --user "githubuser" --proj=" " -c"comentario1"
Preenche a opção de proj com "Projeto Padrão"
Faz o mesmo com o comentário: "Comentário Padrão".
---------------------------------------------------------------------------------------------------------------
Se Não colocar o "user", ou, user="", user=" " (vazio|espaço)
Mostra ajuda e sai.
---------------------------------------------------------------------------------------------------------------
(($U && $P && $C)) && echo Ok
Foram fornecidos argumentos e opções.
---------------------------------------------------------------------------------------------------------------
Se tem "Restos", foi passada uma opção com "espaços sem aspas"
---------------------------------------------------------------------------------------------------------------
Verifique se atende as necessidades.....
Caso positivo, não esqueça de marcar como resolvido e escolher a Melhor Resposta . . .
Rsrsrsrsrsrs
---------------------------------------------------------------------------------------------------------------
#!/usr/bin/env bash
U=0; P=0; C=0;
uso(){
echo -e "Uso: ${s0[2]} (-u|--user) \"usuário\" (-p|--proj) \"nome do projeto\" (-c|--comt) \"aqui os comentários\" | (-h|--help)\n"
exit 0;
}
parsed=$(getopt -a -n "getopt" -o u:p:c:h --long user:,comt:,proj:,help -- "$@");
eval set -- "$parsed";
while :;do
case "$1" in
-c|--comt) C=1;
case "$2" in
""|" ") optc='"Comentário Padrão"';shift 2;;
*) optc=$2;shift 2 ;;
esac ;;
-p|--proj) P=1;
case "$2" in
""|" ") optp='"Projeto Padrão"';shift 2 ;;
*) optp=$2;shift 2 ;;
esac ;;
-u|--user) U=1;
case "$2" in
""|" ") echo "Erro , sem user";uso;;
*) optu=$2;shift 2 ;;
esac ;;
-h|--help) shift;uso;;
--) shift; break ;;
esac
done
## Eficiente
(($U && $P && $C)) && echo -e "\nOK" || echo "Erro, interromper, Requer: User, Proj e Comt."
echo -e "
User: $U [${optu}]
Proj: $P [${optp}]
Comt: $C [${optc}]
Help: $H
Restos: [${@}]";
#Se tem resto, tem algo errado . . .#
[ -z "${@}" ] 2>/dev/null && echo 'OKAY... Nem sempre . . .' || echo 'ERRO'
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________