Gracias a:

ZoomBlog

Calculando el NIF apartir del numero del DNI

Por jackepc - 11 de Octubre, 2007, 0:55, Categoría: scripts

read -p "NUMERO DNI(8 DIGITOS): " DNI
NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $DNI \% 23`
SUMANDO=`expr $MODULO23 \+ 1`
echo $NIF | cut -c $SUMANDO


El número de identificación fiscal NIF español es
un código único que identifica a todos los ciudadanos
españoles a efectos fiscales.

Se calcula mediante el algoritmo denominado modulo23
nada que ver con jim carrey).
Calculamos el resto de dividir el numero del DNI
por 23 y nos da un numero comprendido entre 0 y 22.

Ese numero ha de compararse con la siguiente tabla.

    * 0 - T
    * 1 - R
    * 2 - W
    * 3 - A
    * 4 - G
    * 5 - M
    * 6 - Y
    * 7 - F
    * 8 - P
    * 9 - D
    * 10 - X
    * 11 - B
    * 12 - N
    * 13 - J
    * 14 - Z
    * 15 - S
    * 16 - Q
    * 17 - V
    * 18 - H
    * 19 - L
    * 20 - C
    * 21 - K
    * 22 - E

El script es demasiado grande.
Una linea nos la quitamos pasando como parametro el DNI, asi que nos quedan 4.

NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $1 \% 23`
SUMANDO=`expr $MODULO23 \+ 1`
echo $NIF | cut -c $SUMANDO

Para quitarnos otra linea más lo hacemos asi:

NIF='TRWAGMYFPDXBNJZSQVHLCKE'
MODULO23=`expr $1 \% 23`
echo $NIF | cut -c $(( $MODULO23 + 1 ))>
Para dejarlo tan solo en 2 lineas nos quitamos la variable modulo23 asi:

NIF='TRWAGMYFPDXBNJZSQVHLCKE'
echo $NIF | cut -c $(( $(( $1 % 23 )) + 1 ))

Para dejarlo en una linea:

echo TRWAGMYFPDXBNJZCKE | cut -c $(( $(( $1 % 23 )) + 1 ))

Gracias a:
ZoomBlog.com