shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Validação CPF/CNPJ em shell-script


From: Valtoir
Subject: Re: [shell-script] Validação CPF/CNPJ em shell-script
Date: Fri, 1 Aug 2003 18:25:48 -0300

Buenas, taí um negócio legal.... o script abaixo faz parte do que vc pediu.
Recebe como parâmetro um número de cic, avalia e retorna uma mensagem de
texto indicando se o nº é válido ou não. Só precisa algumas adaptações para
checar cnpj, mais algumas validações (não está checando a quantidade de
caracteres, nem se são números ou não, aliás nem está checando se recebe
parâmetro). Tentei transformá-lo numa função, mas não tenho muita
experiência em funções, passagem de parâmetros, leitura de retorno, etc...

Comentários, correções e melhorias no código (e elogios :) são bem vindos.

Bom findi, pessoal

Valtoir


--------------- 8< corte aqui 8< --------------
#!/bin/bash
## shell script em bash2 para validação de CIC
### escrito por Valtoir S. Jardim e << melhore o código, coloque seu nome
aqui e me envie uma cópia>>  ;-)
#### address@hidden
##### feito em 2003-08-01, atualizado em 2003-08-01

for digpos in 10 11; do
   if [ $digpos == 10 ]; then
      matriz=(10 9 8 7 6 5 4 3 2)
   else
      matriz=(11 10 9 8 7 6 5 4 3 2)
   fi
   y=matriz[1]
   dig=0
   for x in ${matriz[*]}; do
      let pos=$x-$y
      let dig=$dig+`echo $1 | cut -c$pos`*$x
      let y=$y-2
   done
   dig=`echo 11-$dig%11 | bc`
   if [ $dig -ge 10 ]; then
      dig=0
   fi
   if [ $dig -ne `echo $1 | cut -c$digpos ` ]; then
      echo -e "\nCIC inválido\n"
      exit
   fi
done
echo -e "\nCIC válido\n"
--------------- >8 --corte aqui -- >8--------------


----- Original Message ----- 
From: "César A. K. Grossmann" <address@hidden>
To: <address@hidden>
Sent: Friday, August 01, 2003 11:27 AM
Subject: [shell-script] Validação CPF/CNPJ em shell-script


Olá

Alguém já escreveu algum filtro de CPF/CNPJ para shell-script? Eu
volta e meia recebo um arquivo texto com nomes e CPF/CNPJ (entre
outras informações) e preciso validar os mesmos antes de submeter para
outras aplicações.

Estava pensando em algo tipo um filtro que recebe apenas uma opção que
comutaria entre deixar passar os números válidos e os inválidos. O
filtro faria a leitura dos CPF/CNPJ pela entrada padrão, e escreveria
os resultados na saída padrão. Algo tipo:

Início
  INVALIDOS = falso
  Se número_opções = 1 então
     se opção = --inválidos então
       INVALIDOS = verdadeiro
     senão
        erro( "Opção desconhecida" )
     fimse
  fimse

  ler linha
  enquanto linha <> vazio
    se validar_cpf_cnpj (linha) então
      se INVALIDOS = falso então
        escreve linha
      fimse
    senão
      se INVALIDOS então
        escreve linha
      fimse
    fimse
  fimenquanto
fim

A função de validação do CPF CNPJ é que é o problema aqui. O primeiro
passo seria descobrir se se trata de um CPF ou um CNPJ. Supondo que
não existam caracteres de pontuação no número, e que cada linha tem
exatamente um número de CPF ou CNPJ, se tiver 11 caracteres é CPF, e
se tiver 14 caracteres é CNPJ.

Alguém tem alguma idéia ou código a compartilhar?

[]s
--
Cesar A. K. Grossmann ICQ UIN: 35659423
http://www.LinuxByGrossmann.cjb.net/
Sit vis nobiscum.

O Maravilhoso Mundo do Linux 2.6 - Confira a tradução!
http://www.LinuxByGrossmann.cjb.net/wwol26-ptBR.html

Visite o Chessworld.net!
http://www.letsplaychess.com/chessclubs/asplogin.asp?from=13550



---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listasdiscussao.cjb.net
---------------------------------------------------------------------


Seu uso do Yahoo! Grupos é sujeito às regras descritas em:
http://br.yahoo.com/info/utos.html




reply via email to

[Prev in Thread] Current Thread [Next in Thread]