Logo Hardware.com.br
igor.oliveira
igor.oliveir... Super Participante Registrado
945 Mensagens 6 Curtidas

[Dica] Validar CPF em shell script

#1 Por igor.oliveir... 02/05/2007 - 00:34
Pessoal, estava precisando de um validador de CPF em shell script, procurei na net mas não achei nada pronto, então resolvi fazer um e compartilhá-lo. Segue:


#!/bin/sh

## Autor: Igor Oliveira

## Esse script eh baseado nas informacoes obtidas em:
#http://www.imasters.com.br/artigo/2410/javascript/algoritmo_do_cpf

## Variaveis de comandos
ECHO=/bin/echo
DIALOG=/usr/bin/dialog
WC=/usr/bin/wc
EXPR=/usr/bin/expr
CUT=/usr/bin/cut

## Joga uma caixa de dialogo na tela perguntando o CPF.
CPF=$($DIALOG --stdout --title 'CPF' --inputbox 'Informe CPF (soh os numeros)' 0 40 )

## Verifica a quantidade de caracteres.
QTD_CARACTERE=`$ECHO $CPF | $WC -c`
QTD_CARACTERE=`$EXPR $QTD_CARACTERE - 1`

## Se a quantidade de caracteres estiver errada fica no loop.
while [ $QTD_CARACTERE -ne 11 ] ; do
CPF=$($DIALOG --stdout --title 'CPF' --inputbox 'Informe CPF (soh os numeros)' 0 40 )
QTD_CARACTERE=`$ECHO $CPF | $WC -c`
QTD_CARACTERE=`$EXPR $QTD_CARACTERE - 1`
done

## Pega o caractere dez e onze.
DEZ=`$ECHO $CPF | $CUT -c10`
ONZE=`$ECHO $CPF | $CUT -c11`

## Caractere 10. Calculo do "Digito Verificador" (Modulo 11).
CARACTERE=1
CONTROLE=10
ACUM=0
while [ $CARACTERE -le 9 ] ; do
NUM=`$ECHO $CPF | $CUT -c$CARACTERE`
CALC=`$EXPR $NUM \* $CONTROLE`
ACUM=`$EXPR $ACUM + $CALC`
CARACTERE=`$EXPR $CARACTERE + 1`
CONTROLE=`$EXPR $CONTROLE - 1`
done
RESTO=`$EXPR $ACUM % 11`

## Verifica o valor correto para o caractere 10.
if [ $RESTO -lt 2 ] ; then
DEZ_CORRETO=0
else
DEZ_CORRETO=`$EXPR 11 - $RESTO`
fi

## Caracter 11. Calculo do "Digito Verificador" (Modulo 11).
CARACTERE=1
CONTROLE=11
ACUM=0
while [ $CARACTERE -le 10 ] ; do
NUM=`$ECHO $CPF | $CUT -c$CARACTERE`
CALC=`$EXPR $NUM \* $CONTROLE`
ACUM=`$EXPR $ACUM + $CALC`
CARACTERE=`$EXPR $CARACTERE + 1`
CONTROLE=`$EXPR $CONTROLE - 1`
done
RESTO=`$EXPR $ACUM % 11`

## Verifica o valor correto para o caractere 11.
if [ $RESTO -lt 2 ] ; then
ONZE_CORRETO=0
else
ONZE_CORRETO=`$EXPR 11 - $RESTO`
fi

## Verifica a integridade do CPF.
if [ $DEZ -eq $DEZ_CORRETO -a $ONZE -eq $ONZE_CORRETO ] ; then
$DIALOG --title 'CPF' --msgbox "O CPF ( "$CPF" ) eh valido!!!" 6 45
CPF_VALIDO="SIM"
else
$DIALOG --title 'CPF' --msgbox "O CPF ( "$CPF" ) eh invalido!!!" 6 45
CPF_VALIDO="NAO"
fi
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal