Validar entrada de conteudo no [RESOLVIDO]

1. Validar entrada de conteudo no [RESOLVIDO]

Ricardo Ribeiro
KikO-PT

(usa Red Hat)

Enviado em 17/09/2009 - 05:42h

Olá a todos :)

Já uso o VOL à algum tempo, e sempre me ajudou no que foi preciso e desde já os meus parabens a todos pela excelente contribuição que todos dão para o "core" da nossa filosofia, a partilha de conhecimentos!
Agora que me registei, espero também contribuir.

Bom, problema ...!

Tenho o seguinte pedaço de codigo :


#### Pergunta ao utilizador que registo pretende modificar ####

echo "Qual o registo que pretende modificar? (1,2,3...) | Para cancelar prima 0 (zero)"
read NUMREGMOD
echo "$NUMREGMOD" > /tmp/checknumber.tmp
echo "$NUMREGMOD" >> /dev/null
VERIFICA_INTEGER=`cat /tmp/checknumber.tmp | awk '$0 !~ /[a-zA-Z]/ {print "X"}'`
if [ "$NUMREGMOD" = 0 ]
then
sairmenu
elif [ "$?" = 0 ] || [ "$VERIFICA_INTEGER" = "X" ]
then
checklineindoc
else
echo "Opcao nao valida"
modificavarios
fi

#### Verifica a existencia da linha no documento de registos ####

FUNCAO="checklineindoc"
cat /tmp/outputrue.tmp | awk -F " " '{print $1}' | grep "$NUMREGMOD" >> /dev/null
if [ "$?" = 0 ]
then
LINEDELETE=`cat /tmp/outputrue.tmp | awk NR=="$NUMREGMOD" | awk -F " " '{print $2}'`
finalvarios
else
echo "Entrada nao e valida!"
echo ""
valida_modifica_varios
fi

A minha questão reside com o facto de, quando no read introduzo :
(espaço)
Ele dá-me um erro de awk :
awk: cmd. line:2: NR==$
awk: cmd. line:2: ^ unexpected newline or end of string.

Como viram, eu já valido se o valor introduzido é um numero, e ele mostra "Opcao nao valida" quando não dou espaço ou introduzo outro caracter que não um numero.

Existe alguma forma de ultrapassar este "erro" ?

Espero ter-me feito entender, caso contrário tentarei explicar-me melhor.

Obrigado desde já :)

Ricardo Ribeiro @ PT :)


  


2. Re: Validar entrada de conteudo no [RESOLVIDO]

Ricardo Ribeiro
KikO-PT

(usa Red Hat)

Enviado em 17/09/2009 - 07:11h

Já tentei fazer o seguinte :

echo "$NUMREGMOD" | awk '$0 ~/[^0-9]/ { print "X" }' > /tmp/number.tst
CHK_NUM=`cat /tmp/number.tst`
if [ "$CHK_NUM" = "X" ]
then
echo "ERRO!"
E dando um espaço ao NUMREGMOD continua a valida-lo como numero e prossegue no script!

Algumas ideias ? :/

Cumprimentos,


3. Re: Validar entrada de conteudo no [RESOLVIDO]

Ricardo Ribeiro
KikO-PT

(usa Red Hat)

Enviado em 17/09/2009 - 09:36h

Seguidamente tentei explorar com grep ...

teste()
{
echo "insira numero"
read NUMERO
echo "$NUMERO" | grep -w '[0-9]' > /dev/null

if [ "$?" = 0 ]
then
echo "O RESULTADO E NUMERO"
sleep 10
else
echo "NAO E NUMERO"
sleep 10
fi
}

No entanto se a variavel for por exemplo :
9(espaço)
ou 10(p)
Ele aceita a variavel porque tem numeros mas no entanto acho que só faz "grep" ao numero.

Vou continuar a testar de forma a chegar a uma validação o mais correcta possivel.

Cumprimentos ;)


4. Re: Validar entrada de conteudo no [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 17/09/2009 - 16:36h

e se você colocar isso aqui logo após o read:

NUMREGMOD=`echo "$NUMREGMOD" | sed 's/ //g'`


5. Re: Validar entrada de conteudo no [RESOLVIDO]

Ricardo Ribeiro
KikO-PT

(usa Red Hat)

Enviado em 18/09/2009 - 07:10h

Nao tinha pensado nisso!
Muito bem pensado!

Resultou amigo :)

Muito obrigado :)

Abraço e bom fim de semana para todos :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts