[Ubuntu-BR] Problema com script shell

Nilo Martins jniloms em gmail.com
Segunda Janeiro 22 20:48:12 UTC 2007


Obrigado pela ajuda.

o [:lower:] e o [:upper:] funcionaram perfeitamente.

Porém aqui na minha máquina continua dando erro mesmo quando coloco o A-Z na
frente do a-z, desta vez o z minúsculo fica mostrando mensagem que é
maiúsculo. !?!? e o detalhe quando abro o texto no gedit ele coloca o "z" de
uma cor diferente como se fosse o atributo de algum comando. !!?!? fica [a-z]
??!!

2007/1/22, hamacker <sirhamacker em gmail.com>:
>
> Onk Donk.
>
> É terrivel encontrar exemplos que não funcionam, não é mesmo ?
> Chega a ser frustante, eu sei como é isso e não vou negar ajuda.
>
> É o seguinte a-z e A-Z tem algumas precedencias, por exemplo A-Z
> sempre estará no grupo entre a-z, mas não o inverso, assim se voce
> modificar a precedencia como :
> case "$1" in
> ["A-Z"])  echo Letra Maiuscula
>        ;;
> ["a-z"])  echo Letra Minuscula
>        ;;
> [0-9])  echo Numero
>        ;;
>    *)  echo Caracter Especial
>        ;;
> esac
>
> funcionará. Isso tem a ver precedencias não muito documentadas. Mas a
> verdade é que no bash voce tem lower e upper justamente para esse
> proposito. Quem sou eu para julgar o trabalho do Julho, mas o exemplo
> ficaria melhor assim :
> case "$1" in
>   [[:lower:]]   ) echo "Letra Minuscula";;
>   [[:upper:]]   ) echo "Letra Maiuscula";;
>   [0-9]         ) echo "Digito Numerico";;
>   *             ) echo "Caracter Especial";;
> esac
>
> Use sempre aspas nos echos e ";;" é porque voce terminou uma sentença
> do case. Se cada opção do seu case..in tivesse mais de duas linhas, a
> ultima linha é que deveria ter um ";;". Isso é apenas para explicar
> melhor.
>
> []'s e sucesso no seu aprendizado.
>
> 2007/1/22, Nilo Martins <jniloms em gmail.com>:
> > Estou iniciando meus estudo de shell script e comprei o livro
> Programação
> > Shell Linux (de Julio Cezar Neves) para facilitar esta tarefa.
> >
> > Neste livro tem um exemplo que está dando erro aqui no meu Ubuntu.
> >
> > O código é o seguinte: (testchar.sh)
> >
> > #
> > #  Testa qual o tipo de um caracter recebido por parametro
> > #
> >
> > #####  Teste da Quantidade de Parametros  #####
> > erro=0
> > if  [ "$#" -ne 1 ]
> > then
> >     echo "Erro -> Uso: testchar caracter"
> >     erro=1
> > fi
> >
> > #####  Testa se o 1o. parametro tem o tamanho de um caracter  #####
> > case $1 in
> >     ?)  ;;
> >     *)  echo "Erro -> Parametro passado tem mais de um caracter"
> >         erro=2
> >         ;;
> > esac
> >
> > #####  Se houve erro o programa termina, passando o codigo do
> erro  #####
> > if  [ "$erro" -ne 0 ]
> > then
> >     exit $erro
> > fi
> >
> > case $1 in
> > [a-z])  echo Letra Minuscula
> >         ;;
> > [A-Z])  echo Letra Maiuscula
> >         ;;
> > [0-9])  echo Numero
> >         ;;
> >     *)  echo Caracter Especial
> >         ;;
> > esac
> > exit 0
> >
> > O problema é que quando executo:
> > $ ./testchar.sh A
> > Letra Minuscula
> > ------------------- > Como vocês viram deveria aparecer a mensagem Letra
> > Maiúscula e não Minúscula.
> >
> > Um detalhe interessante quando abro o arquivo para editar no gedit ele
> marca
> > o "z" minúsculo do case com uma cor diferente.
> >
>
> --
> ubuntu-br mailing list
> ubuntu-br em lists.ubuntu.com
> www.ubuntubrasil.org
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>



More information about the ubuntu-br mailing list