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