PEguei o seu script e fiz a inversão ficando assim :
#!/bin/bash
#
#  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 Maiuscula
       ;;
[a-z])  echo Letra Minuscula
       ;;
[0-9])  echo Numero
       ;;
   *)  echo Caracter Especial
       ;;
esac
exit 0

Depois fiz o teste e veja :
laptop:/tmp$ ./testchar.sh A
Letra Maiuscula
laptop:/tmp$ ./testchar.sh a
Letra Minuscula

Em outras palavras, funcionou. Mesmo sem o lower ou upper. Faz o
acrescimo na 1a linha do #!/bin/bash, porque talvez seu interpretador
seja outro (dash, ash,...). Isso apenas para entender o problema
porque particularmente upper/lower é mais simples.

[]'s e sucesso.

Em 22/01/07, Nilo Martins<[EMAIL PROTECTED]> escreveu:
> 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 <[EMAIL PROTECTED]>:
> >
> > 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 <[EMAIL PROTECTED]>:
> > > 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@lists.ubuntu.com
> > www.ubuntubrasil.org
> > https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
> >
> --
> ubuntu-br mailing list
> ubuntu-br@lists.ubuntu.com
> www.ubuntubrasil.org
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-br
>

-- 
ubuntu-br mailing list
ubuntu-br@lists.ubuntu.com
www.ubuntubrasil.org
https://lists.ubuntu.com/mailman/listinfo/ubuntu-br

Responder a